Core Data Cloudkit Xcoders Talk

Total Page:16

File Type:pdf, Size:1020Kb

Core Data Cloudkit Xcoders Talk Integrating Core Data and CloudKit Jared Sorge Scorebook Remember Your Games Core Data Paul Goracke – “Core Data Potpurri”, February 2014 http://bit.ly/1A5fWGr Marcus Zarra – “My Core Data Stack”, March 2015 http://bit.ly/1KQaibt TaphouseKit – GitHub Project http://bit.ly/1e4AEwo CloudKit OS X Yosemite & iOS 8 Transport layer No black magic CloudKit Used by Apple iCloud Drive & iCloud Photo Library Used by third parties 1Password CloudKit Stack CKContainer CloudKit Stack Public CKDatabase Private CKDatabase CKContainer CloudKit Stack CKRecordZone Default Zone Custom Public CKDatabase Private CKDatabase CKContainer CloudKit Stack CKRecord CKRecordZone Default Zone Custom Public CKDatabase Private CKDatabase CKContainer CloudKit Stack CKSubscription (optional) CKRecord CKRecordZone Default Zone Custom Public CKDatabase Private CKDatabase CKContainer CloudKit Stack CKSubscription (optional) CKRecord CKRecordZone Default Zone Custom Public CKDatabase Private CKDatabase CKContainer CKRecord Store data using key/value pairs NSString, NSNumber, NSData, NSDate, NSArray, CLLocation, CKAsset, CKReference Use constant strings for keys recordType property is like a database table name CKRecord Initializers initWithRecordType: initWithRecordType:zoneID: initWithRecordType:recordID: CKRecordID 2 properties recordName, zoneID Initializers initWithRecordName: initWithRecordName:zoneID: CKRecordZoneID initWithZoneName:ownerName: Use CKOwnerDefaultName for ownerName Zone name is a string Use CKRecordZoneDefaultName for the default zone CKRecordZoneID CKContainer *container = [CKContainer sharedContainer]; CKDatabase *privateDB = [container privateCloudDatabase]; CKRecordZoneID *newZone = [[CKRecordZoneID alloc] initWithZoneName:@"ScorebookData" ownerName:CKOwnerDefaultName]; [privateDB saveRecordZone:newZone completionHandler:^(CDRecordZone *zone, NSError *error) { //Error handling //Additional configuration }]; CKRecord Creation CKRecordZoneID *zone = // CKRecordID *recordID = [[CKRecordID alloc] initWithRecordName:self.ckRecordName zoneID:zone]; CKRecord *gameRecord = [[CKRecord alloc] initWithRecordType:[SBGame entityName] recordID:recordID]; [gameRecord setObject:self.title forKey SBGameTitleKEY]; gameRecord[SBGameScoringTypeKEY] = @(self.scoringType); gameRecord[SBGamePointsToWinKEY] = @(self.pointsToWin); CKAsset Blob storage Single initializer initWithFileURL: No support for NSData Attach to CKRecord instance as a value CKAsset NSURL *fileURL = // … url of path to file CKAsset *asset = [[CKAsset alloc] initWithFileURL:fileURL]; CKRecord *record = // record[@“asset”] = asset; CKReference Relate records with separate record types Relationships in a single zone only 1:many relationships many:many not officially supported Associate on the many side of the relationship Person Player CKReference Initializers -initWithRecordID:action: -initWithRecord:action: Set the delete action on the initializer CKReferenceActionDeleteSelf CKReferenceActionNone CKReference CKRecordID *personRecordID = // CKReference *personReference = [[CKReference alloc] initWithRecordID:personRecordID action:CKReferenceActionDeleteSelf]; CKRecord *playerRecord = // playerRecord[SBPlayerPersonKEY] = personReference; CKSubscription Subscribes to changes of a record type or custom zone Can use a search predicate to determine matches Uses push notifications to alert you of changes Uses the remote notification system in iOS CKSubscription Save to the database for activation on a device Save once, then retrieve on other devices CKSubscription CKRecordZoneID *userRecordZone = // [privateDB fetchAllSubscriptionsWithCompletionHandler:^(NSArray *subs, NSError *error) { CKSubscription *subscription = [subs firstObject]; if (subscription == nil) { subscription =[[CKSubscription alloc] initWithZoneID:userRecordZone options:0]; } [privateDB saveSubscription:scorebookDataSubscription completionHandler:^(CKSubscription *sub, NSError *error) { //handle error }]; }]; CloudKit Stack CKSubscription (optional) CKRecord CKRecordZone Default Zone Custom Public CKDatabase Private CKDatabase CKContainer Putting it together Sync is about upload, download, and conflict handling Make a Plan Database: public, private, or both? Using a custom record zone? Are you happy with your Core Data object graph? How to make specific things generic, and generic things specific? SBCloudKitCompatible @protocol SBCloudKitCompatible <NSObject> //Add to entities @property (nonatomic, strong) NSString *ckRecordName; @property (nonatomic, strong) NSDate *modificationDate; //Add to categories on the model objects - (CKRecord *)cloudKitRecordInRecordZone:(CKRecordZoneID *)zone; + (NSManagedObject *)managedObjectFromRecord:(CKRecord *)record context:(NSManagedObjectContext *)context; @end ckRecordName - (void)awakeFromInsert { [super awakeFromInsert]; NSString *uuid = [[NSUUID UUID] UUIDString]; NSString *recordName = [NSString stringWithFormat: @“SBGame|~|%@“, uuid]; /* SBGame|~|386c1919-5f25-4be2-975f-5b34506c51db */ self.ckRecordName = recordName; } modificationDate - (void)processCoreDataWillSaveNotification:(NSNotification *)notification { NSManagedObjectContext *context = // monitored context NSSet *inserted = [context insertedObjects]; NSSet *updated = [context updatedObjects]; if (inserted.count == 0 && updated.count == 0) { return; } for (id<SBCloudKitCompatible> managedObject in inserted) { managedObject.modificationDate = [NSDate date]; } for (id<SBCloudKitCompatible> managedObject in updated) { managedObject.modificationDate = [NSDate date]; } } modificationDate - (void)processCoreDataWillSaveNotification:(NSNotification *)notification { NSManagedObjectContext *context = // monitored context NSSet *inserted = [context insertedObjects]; NSSet *updated = [context updatedObjects]; if (inserted.count == 0 && updated.count == 0) { return; } for (id<SBCloudKitCompatible> managedObject in inserted) { managedObject.modificationDate = [NSDate date]; } for (id<SBCloudKitCompatible> managedObject in updated) { managedObject.modificationDate = [NSDate date]; } } cloudKitRecordInRecordZone: - (CKRecord *)cloudKitRecordInRecordZone:(CKRecordZoneID *)zone { CKRecordID *recordID = [[CKRecordID alloc] initWithRecordName:self.ckRecordName zoneID:zone]; NSString *entityName = [SBPerson entityName]; CKRecord *personRecord = [[CKRecord alloc] initWithRecordType:entityName recordID:recordID]; personRecord[SBPersonFirstNameKEY] = self.firstName; personRecord[SBPersonLastNameKEY] = self.lastName; personRecord[SBPersonEmailAddressKEY] = self.emailAddress; if (self.imageURL) { CKAsset *imageAsset = [[CKAsset alloc] initWithFileURL:[self urlForImage]]; personRecord[SBPersonAvatarKEY] = imageAsset; } return personRecord; } managedObjectFromRecord:context: + (instancetype)managedObjectFromRecord:(CKRecord *)ckRecord context:(NSManagedObjectContext *)context { CKRecordID *recordID = ckRecord.recordID; SBMatch *match = [SBMatch matchWithCloudKitRecordName:recordID.recordName managedObjectContext:context]; if (match.modificationDate != nil && ckRecord.modificationDate < match.modificationDate) { return match; } match.date = ckRecord[SBMatchDateKEY]; match.monthYear = ckRecord[SBMatchMonthYearKEY]; match.finished = [ckRecord[SBMatchFinishedKEY] boolValue]; match.note = [ckRecord objectForKey:SBMatchNoteKEY]; … managedObjectFromRecord:context: … CKReference *gameRef = ckRecord[SBMatchGameKEY]; if (gameRef != nil) { SBGame *game = [SBGame gameWithCloudKitRecordID:gameRef.recordID managedObjectContext:context]; match.game = game; } return match; } Upload to CloudKit Monitor NSManagedObjectContextDidSaveNotification on the main thread NSManagedObjectContext Gather the objects from the userInfo dictionary in the posted notification Convert the inserted/updated objects into an array of CKRecords Convert to CKRecord CKRecordZoneID *zone = // NSMutableArray *savedRecords = [NSMutableArray array]; for (id<SBCloudKitCompatible> object in insertedObjects) { CKRecord *record = [object cloudKitRecordInRecordZone:zone]; [savedRecords addObject:record]; } Upload to CloudKit Monitor NSManagedObjectContextDidSaveNotification on the main thread NSManagedObjectContext Gather the objects from the userInfo dictionary in the posted notification Convert the inserted/updated objects into an array of CKRecords Convert the deleted objects into an array of CKRecordIDs Convert to CKRecordID CKRecordZoneID *zone = // NSMutableArray *deletedRecords = [NSMutableArray array]; for (id<SBCloudKitCompatible> managedObject in deletedObjects) { CKRecordID *deletedRecordID = [[CKRecordID alloc] initWithRecordName:managedObject.ckRecordName zoneID:zone]; [deletedRecords addObject:deletedRecordID]; } } Upload to CloudKit Monitor NSManagedObjectContextDidSaveNotification on the main thread NSManagedObjectContext Gather the objects from the userInfo dictionary in the posted notification Convert the inserted/updated objects into an array of CKRecords Convert the deleted objects into an array of CKRecordIDs Use a CKModifyRecordsOperation to send the arrays to CloudKit Upload to CloudKit CKDatabase *database = // CKModifyRecordsOperation *modifyRecords = [[CKModifyRecordsOperation alloc] initWithRecordsToSave:savedRecords recordIDsToDelete:deletedRecords]; //Called only on the saved records array modifyRecords.perRecordCompletionBlock = ^(CKRecord *record, NSError *error) { //Handle Error }; modifyRecords.modifyRecordsCompletionBlock = ^(NSArray *saved, NSArray *deleted, NSError *error) { //Handle error, perform cleanup }; modifyRecords.savePolicy = CKRecordSaveAllKeys; [database addOperation:modifyRecords];
Recommended publications
  • CARL ASHLEY Mac Admin, Occasional Photographer
    CARL ASHLEY mac admin, occasional photographer Posts from carlashley.com. Printed on June 14, 2020 using Print My Blog STARTING THE SWITCH TO PYTHON 3 28 JUNE 2019 CATEGORIES: MAC OS TAGS: PYTHON With Python (and other scripting languages) being dropped from deprecated in macOS Catalina*, and Python 2.7 maintenance ending in 2020, it’s time to start updating any Python 2 scripts so they are compatible with Python 3. This might seem like a big task, and it could very well be for your code-base, however there are a few things you can do to start the process. If you don’t already have Python 3 installed on your Mac, you’ll need to get it installed. You can install it using homebrew , or you can install it from the Python Releases for Mac OS X page. It’s also provided by Apple, but currently you need an Apple Developer account to access those command line tool betas. There’s a great guide on what to do and what not to do when installing Python 3 on macOS here. No matter which way you get it installed, your Python 3 interpreter will be in a new location, and you’ll de˚nitely want to update pip3 for package management. You can also expect a lot, if not all of the “standard” packages that Apple included with their Python 2.7 framework to not be installed, so you’ll need to make sure you’ve installed those as well. This is a great opportunity to start using virtual environments.
    [Show full text]
  • Apple in Education Data and Privacy Overview for Schools
    Apple in Education Data and Privacy Overview for Schools Education has always been part of Apple’s DNA. We believe technology has the power to transform every classroom and engage every student. Our products are designed to expand how teachers teach and students learn with access to powerful apps and engaging content on the devices they love to use. We also know how important security and privacy is to protect the data students create, store, and access throughout the learning experience. Security and privacy are fundamental to the design of all Apple hardware, software, and services. We take an integrated approach to ensure that every aspect of the experience has security and privacy built in. This approach considers the privacy and security of all users including those within an education setting such as teachers, faculty, staff and students. We have also created features and services that are designed specifically for education, including Apple School Manager, Managed Apple IDs, and Shared iPad. These capabilities are built with the same integrated approach and with additional consideration for the specific security and privacy needs of students and institutions. This overview covers how Managed Apple IDs and our related education features and services handle student data and privacy. You can use this overview to communicate to parents about how their students’ data is secured by Apple. Apple’s Commitment to Student Privacy Apple will never track, share, or sell student information for advertising or marketing purposes. We don’t build profiles of students based on their email content or web browsing habits. We also don’t collect, use, or disclose personal student information other than to provide educational services.
    [Show full text]
  • Best Practices for Building Apps Used in Business and Education 0.9
    Distribution #WWDC16 Best Practices for Building Apps Used in Business and Education Session 304 David M. O’Rourke iOS Managed Configuration Team © 2016 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. Agenda Agenda Modern App Design Practices Agenda Modern App Design Practices Architecture Overview of Shared iPad Agenda Modern App Design Practices Architecture Overview of Shared iPad Cover What iOS Technologies to Adopt for Shared iPad Agenda Modern App Design Practices Architecture Overview of Shared iPad Cover What iOS Technologies to Adopt for Shared iPad New Opportunities to Enhance Your App Modernize Your Application Modernize Your Application Customers expect a fully modern and up to date iOS experience • Stay current, adopt iOS features… Modernize Your Application Customers expect a fully modern and up to date iOS experience • Stay current, adopt iOS features… Some example technologies: Modernize Your Application Customers expect a fully modern and up to date iOS experience • Stay current, adopt iOS features… Some example technologies: Modernize Your Application Customers expect a fully modern and up to date iOS experience • Stay current, adopt iOS features… Some example technologies: Modernize Your Application Customers expect a fully modern and up to date iOS experience • Stay current, adopt iOS features… Some example technologies: Modernize Your Application Customers expect a fully modern and up to date iOS experience • Stay current, adopt iOS features… Some
    [Show full text]
  • Cloudkit Tips and Tricks Session 715
    System Frameworks #WWDC15 CloudKit Tips And Tricks Session 715 Nihar Sharma CloudKit Engineer © 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. CloudKit What is it? CloudKit What is it? iCloud database CloudKit What is it? iCloud database Large file storage CloudKit What is it? iCloud database Large file storage Privacy obsessed CloudKit What is it? iCloud database Large file storage Privacy obsessed Developer API CloudKit What is it? iCloud database Large file storage Privacy obsessed Developer API Apple applications built on it CloudKit One year later CloudKit No really, what is it? Introduction to CloudKit WWDC14 Advanced CloudKit WWDC14 100% Awesome with Swift 2! record.setObject(5, forKey: "numberOfClowns") if let partyDate = record.objectForKey("date") as? NSDate {…} record["numberOfClowns"] = 5 if let partyDate = record["date"] as? NSDate {…} record["numberOfClowns"] = 5 if let partyDate = record["date"] as? NSDate {…} modifyRecordsOperation.recordsToSave = ["I’m not a CKRecord!"] record["numberOfClowns"] = 5 if let partyDate = record["date"] as? NSDate {…} modifyRecordsOperation.recordsToSave = ["I’m not a CKRecord!"] error: cannot assign a value of type '[String]' to a value of type '[CKRecord]?' CloudKit Storage architecture CloudKit Storage architecture CloudKit Container CloudKit Storage architecture CloudKit Container Public Database CloudKit Storage architecture CloudKit Container Public Database Private Database CloudKit Storage architecture CloudKit
    [Show full text]
  • Ios-Security-Guide.Pdf
    iOS Security iOS 9.3 or later May 2016 Contents Page 4 Introduction Page 5 System Security Secure boot chain S y s t e m S o f t w a r e A uthorization S e c u r e E n c l a v e T o u c h I D Page 10 Encryption and Data Protection Hardware security features File Data Protection Passcodes Data Protection classes Keychain Data Protection Access to Safari saved passwords Keybags Security Certifications and programs Page 18 App Security App code signing Runtime process security Extensions App Groups Data Protection in apps Accessories HomeKit HealthKit Secure Notes Apple Watch Page 28 Network Security TLS VPN Wi-Fi Bluetooth Single Sign-on AirDrop security Page 32 Apple Pay Apple Pay components How Apple Pay uses the Secure Element How Apple Pay uses the NFC controller Credit and debit card provisioning Payment authorization Transaction-specific dynamic security code Contactless payments with Apple Pay Paying with Apple Pay within apps Rewards cards Suspending, removing, and erasing cards iOS Security—White Paper | May 2016 2 Page 39 Internet Services A p p l e I D i M e s s a g e F a c e T i m e i C l o u d i C l o u d K e y c h a i n S i r i C o n t i n u i t y Spotlight Suggestions Page 52 Device Controls Passcode protection i O S p a i r i n g m o d e l Configuration enforcement Mobile device management (MDM) Shared iPad Apple School Manager D e v i c e E n r o l l m e n t Apple Configurator 2 Supervision Restrictions R e m o t e W ipe Lost Mode Activation Lock Page 59 Privacy Controls Location Services Access to personal data P r i v a c y p o l i c y Page 60 Conclusion A commitment to security Page 61 Glossary Page 63 Document Revision History iOS Security—White Paper | May 2016 3 Introduction Apple designed the iOS platform with security at its core.
    [Show full text]
  • Ios Security Ios 12.3
    iOS Security iOS 12.3 May 2019 Contents Page 5 Introduction Page 6 System Security Secure boot chain System Software Authorization Secure Enclave OS Integrity Protection Touch ID Face ID Page 15 Encryption and Data Protection Hardware security features File Data Protection Passcodes Data Protection classes Keychain data protection Keybags Page 25 App Security App code signing Runtime process security Extensions App Groups Data Protection in apps Accessories HomeKit SiriKit HealthKit ReplayKit Secure notes Shared notes Apple Watch Page 39 Network Security TLS VPN Wi-Fi Bluetooth Single sign-on Continuity AirDrop security Wi-Fi password sharing iOS Security | May 2019 2 Page 47 Apple Pay Apple Pay components How Apple Pay uses the Secure Element How Apple Pay uses the NFC controller Credit, debit, and prepaid card provisioning Payment authorization Transaction-specific dynamic security code Paying with credit and debit cards in stores Paying with credit and debit cards within apps Paying with credit and debit cards on the web Contactless passes Apple Pay Cash Transit cards Student ID cards Suspending, removing, and erasing cards Page 58 Internet Services Apple ID iMessage Business Chat FaceTime iCloud iCloud Keychain Siri Safari Suggestions, Siri Suggestions in Search, Lookup, #images, News app, and News widget in non-News countries Safari Intelligent Tracking Prevention Page 73 User Password Management App access to saved passwords Automatic strong passwords Sending passwords to other people or devices Credential provider extensions Page
    [Show full text]
  • Ios Security Ios 11
    iOS Security iOS 11 January 2018 Contents Page 4 Introduction Page 5 System Security Secure boot chain System Software Authorization Secure Enclave Touch ID Face ID Page 12 Encryption and Data Protection Hardware security features File Data Protection Passcodes Data Protection classes Keychain Data Protection Access to Safari saved passwords Keybags Security Certifications and programs Page 22 App Security App code signing Runtime process security Extensions App Groups Data Protection in apps Accessories HomeKit SiriKit HealthKit ReplayKit Secure Notes Shared Notes Apple Watch Page 34 Network Security TLS VPN Wi-Fi Bluetooth Single Sign-on AirDrop security Wi-Fi password sharing Page 39 Apple Pay Apple Pay components How Apple Pay uses the Secure Element How Apple Pay uses the NFC controller Credit, debit, and prepaid card provisioning Payment authorization iOS Security Guide—White Paper | January 2018 2 Transaction-specific dynamic security code Contactless payments with Apple Pay Paying with Apple Pay within apps Paying with Apple Pay on the web or with Handoff Rewards cards Apple Pay Cash Suica Cards Suspending, removing, and erasing cards Page 49 Internet Services Apple ID iMessage FaceTime iCloud iCloud Keychain Siri Continuity Safari Suggestions, Siri Suggestions in Search, Lookup, #images, News App, and News Widget in Non-News Countries Page 64 Device Controls Passcode protection iOS pairing model Configuration enforcement Mobile device management (MDM) Shared iPad Apple School Manager Device Enrollment Apple Configurator 2 Supervision Restrictions Remote Wipe Lost Mode Activation Lock Page 71 Privacy Controls Location Services Access to personal data Privacy policy Page 73 Apple Security Bounty Page 74 Conclusion A commitment to security Page 75 Glossary Page 77 Document Revision History iOS Security Guide—White Paper | January 2018 3 Introduction Apple designed the iOS platform with security at its core.
    [Show full text]
  • OS X Yosemite
    OS X Yosemite Core Technologies Overview October 2014 Core Technologies Overview 2 OS X Yosemite Contents Page 4 Introduction Page 5 System Startup BootROM EFI Kernel Drivers Initialization Address Space Layout Randomization (ASLR) Compressed Memory Power Efficiency App Nap Timer Coalescing Task-Level Scheduling Page 10 Disk Layout Partition Scheme Core Storage File Systems Page 13 Process Control Launchd Loginwindow Grand Central Dispatch Sandboxing Gatekeeper XPC Page 20 Network Access Ethernet Wi-Fi Multihoming IPv6 IP over Thunderbolt Network File Systems Access Control Lists Directory Services Remote Access Bonjour Core Technologies Overview 3 OS X Yosemite Page 27 Document Lifecycle Auto Save Automatic Versions Document Management Version Management Continuity Extensions iCloud Storage Page 31 Data Management Spotlight Time Machine Page 34 Developer Tools Xcode Swift LLVM Instruments Accelerate Automation WebKit Page 41 For More Information Core Technologies Overview 4 OS X Yosemite Introduction With more than 83 million users—consumers, scientists, animators, developers, and system administrators—OS X is the most widely used UNIX® desktop operating system. In addition, OS X is the only UNIX environment that natively runs Microsoft Office, Adobe Photoshop, and thousands of other consumer applications—all side by side with traditional command-line UNIX applications. Tight integration with hardware— from the sleek MacBook Air to the powerful Mac Pro—makes OS X the platform of choice for an emerging generation of power users. This document explores the powerful industry standards and breakthrough innovations in the core technologies that power Apple’s industry-leading user experiences. We walk you through the entire software stack, from firmware and kernel to iCloud and developer tools, to help you understand the many things OS X does for you every time you use your Mac.
    [Show full text]
  • COSC349—Cloud Computing Architecture David Eyers Learning Objectives
    Cloud Middleware and MBaaS COSC349—Cloud Computing Architecture David Eyers Learning objectives • Outline the usefulness of middleware for developing applications that use cloud computing • Contrast Apple CloudKit and Google Firebase in terms of relationships between provider, tenants and clients • Describe typical MBaaS services • MBaaS—Mobile Back-end as a Service (seen in XaaS lecture) • Sketch pricing approach of CloudKit versus Firebase COSC349 Lecture 20, 2020 2 Middleware for cloud computing • Middleware: OS-like functionality for apps beyond OS • e.g., OS accesses local files; middleware accesses cloud files • (assumption that OS isn’t cloud aware is less realistic over time…) • Middleware often eases translation between platforms • Typically use middleware via a software library • … contrast this with programming directly against cloud APIs • Focus on two (Mobile) Backend as a Service offerings: • Apple's CloudKit (2014)—iCloud launched 2011 • Google’s Firebase (~2014)—Firebase launched in 2011 COSC349 Lecture 20, 2020 3 MBaaS versus typical AWS services • Amazon has a relationship with the tenant • … but does not explicitly have any link with tenants’ clients • Contrast MBaaS from Apple, Google, etc.: • company has relationship with the tenant (e.g., iOS app dev.) • company also has a relationship with the client • Differences between Apple, Google, etc. • Apple has a financial link by selling kit to tenants’ clients • Google interests in cross-service linkage—across search, etc. • (Amazon doesn’t seem to leverage Amazon+AWS
    [Show full text]
  • Apple in Education—Data and Privacy Overview for Schools | April 2021 1 Apple School Manager and Managed Apple Ids
    Apple in Education Data and Privacy Overview for Schools Contents For 40 years, Apple technology has helped to expand how teachers teach and Apple’s Commitment to Student students learn, with access to powerful tools and apps that enable engaging Privacy learning experiences and unleash the creative potential in every student. We Apple School Manager and know how important security and privacy are to protect the data that students Managed Apple IDs create, store, and access throughout the learning experience. Schoolwork Security and privacy are fundamental to the design of all Apple hardware, Classroom software, and services. We take an integrated approach to ensure that every Managed Apple IDs and Shared iPad aspect of the experience has security and privacy built in. This approach considers the privacy and security of all users, including those within an iCloud and Data Security education setting such as teachers, faculty, staff, and students. CloudKit and Third-Party Apps Location Services and Lost Mode We have also created features and services that are designed specifically for education, including Apple School Manager, Managed Apple IDs, and Shared Analytics Information iPad. These capabilities are built with the same integrated approach and with International Data Transfer additional consideration for the specific security and privacy needs of students Privacy Overview for Parents and institutions. Additional Resources This overview covers how Managed Apple IDs and our related education features and services handle student data and privacy. You can use this overview to communicate to parents about how their students’ data is secured by Apple. Apple’s Commitment to Student Privacy Apple will never track, share, or sell student information for advertising or marketing purposes.
    [Show full text]
  • Apple Developer Program Information
    Apple Developer Program Information Introduction The Apple Developer Program provides a complete and integrated process for developing and distributing applications for Apple-branded products. With Xcode and the Apple SDKs, you can get started developing your applications for iPad, iPhone, iPod touch and Apple Watch. If you want distribute such applications to end users, then you will need to join the Apple Developer Program. For more information visit: http://developer.apple.com/programs. Below is a sample list of Program Requirements for development of applications for iPad, iPhone, iPod touch and Apple Watch under the Apple Developer Program. This list is provided for general informational purposes only and is not intended to create or modify any agreement. The Program Requirements may vary according to the applicable Apple Developer Program and may change from time to time. Additional Program Requirements may apply. Apple may update this website from time to time. To view the complete, current list of Program Requirements and other applicable terms and conditions, please apply to enroll in the Apple Developer Program at http://developer.apple.com/programs. Sample Apple Developer Program Requirements: APIs and Functionality: 3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Further, OS X Applications submitted to Apple for distribution on the App Store may use only Documented APIs included in the default installation of OS X or as bundled with Xcode and the Mac SDK; deprecated technologies (such as Java) may not be used. 3.3.2 Except as set forth in the next paragraph, an Application may not download or install executable code.
    [Show full text]
  • The App Developers Guide to Winning Ios 8
    THE APP DEVELOPERS GUIDE TO WINNING IOS 8 BY DAN ROWINSKI 01 INTRODUCTION BIG SPLASH pple kicked off the Mobile Revolution in 2007. At the time, Microsoft CEO Satya Nadella has styled the Mobile A the iPhone was a curiosity, lampooned by some, praised by Revolution as, “ubiquitous computing and ambient others. In seven years, it has proven to be the most important intelligence,” as a means of describing the spread of driver of technological industry growth since the inception of the smartphones everywhere connected to the Internet and World Wide Web. the cloud. The notion of ubiquitous computing doesn’t just stop with the smartphone, even if that is where it started. In the process, Apple has made a household name out of the The Mobile Revolution has pushed the bounds of hardware operating system for the iPhone: iOS. and software as developers, manufacturers and engineers have built systems that are smaller and more powerful to It is hard to imagine now that now that iOS is part of the popular increase the capabilities of these pocket-based computers. lexicon, but it originally did not have a dedicated name. When the first iPhone was released in July 2007, Apple just said that it ran a The PC shrunk to fit into a phone. With that accomplished, version of Apple’s desktop operating system, Mac OS X. In 2008, all those small and powerful components in the phone are Apple started calling it “iPhone OS” (which subsequently led to the ready to explode like a supernova, invading every gadget debut of the Apple App Store).
    [Show full text]