ÕªÒª£ºÔøÔÚ΢Èí¹¤×÷12ÄêµÄMike Swanson´Ó1Ô¿ªÊ¼¾ÍÒ»Ö±ÔÚµ·¹Ä¿ª·¢Apple WatchÓ¦Óã¬ÔÚ´Ë¿ª·¢¹ý³ÌÖУ¬Ëû×ܽáÁËÖî¶àWatchKitµÄ¿ª·¢½¨ÒéÓë¼¼ÇÉ£¬²¢½«ÆäÕûÀí³ÉÎÄ£¬Ï£Íû¶ÔApple WatchÓ¦Óÿª·¢ÕßÃÇÄܹ»ÓÐËùÆô·¢¡£
×ÔÒ»ÔÂÖÐÑ®ÒÔÀ´£¬ÎÒ¾ÍÈ«ÉíÐÄͶÈëµ½WhereNotesÓ¦ÓõÄApple Watch°æ±¾µÄ¿ª·¢ÉÏÁË£¬²¢ÐÒÔ˵ØÊÜÑû²Î¼ÓÁË¿â±ÈµÙŵƻ¹û×ܲ¿µÄApple WatchʵÑéÊÒ²âÊÔ¡£ÔÚ¹ýÈ¥µÄÈý¸ö°ëÔÂÀÎÒÕûÀíÁËÖî¶àWatchKitµÄ¿ª·¢½¨ÒéºÍ¼¼ÇÉ£¬²¢½«ÖصãÄÚÈÝÁÐÔÚÕâÀϣÍû¶ÔApple WatchÓ¦Óÿª·¢ÕßÓÐËùÆô·¢¡£

1. WatchKitµÄNSExtensionContext֪ͨ
¿ÉÄܶÔÖî¶à¿ª·¢ÕßÀ´Ëµ£¬UIApplicationÉϵĺ¯Êý·½·¨²¢²»Ä°Éú£¬±ÈÈçapplicationWillEnterForeground:ºÍapplicationDidEnterBackground:£¬Á½Õß¶¼ÊÇÏȱ»µ÷Óã¬Ôٷֱ𷢳öUIApplicationWillEnterForegroundNotificationºÍUIApplicationDidEnterBackgroundNotificationµÄ֪ͨ¡£¶øWatchKitµÄ NSExtensionContext֪ͨÔò°üÀ¨£º
NSExtensionHostWillEnterForegroundNotification
NSExtensionHostDidEnterBackgroundNotification
NSExtensionHostWillResignActiveNotification
NSExtensionHostDidBecomeActiveNotification
2. ³äµç²âÊÔ¸üÓÐЧ
ÔÚApple Watch³äµçʱ½øÐвâÊÔ£¬²âÊÔ¹ý³Ì¸üÈÝÒ×£¬½á¹ûÒ²¸ü¿É¿¿£¬ÕâÒ»µã²»½ö½öÊÇÎÒ£¬ÆäËûApple¿ª·¢ÕßÂÛ̳ÉϵÄͬÐÐÒ²ÉîÓÐÌå»á¡£
3. WatchKitÖ»ÄÜÔÚµ±Ç°»î¶¯/¿É¼ûµÄÊÓͼ¿ØÖÆÆ÷ÉϸüÐÂ
ÔÚiOSÉϼ¸ºõ¿ÉÒÔËæÊ±¸üнçÃæÔªËØ£¬µ«WatchKitÖ»ÄÜÔÚµ±Ç°»î¶¯/¿É¼ûµÄÊÓͼ¿ØÖÆÆ÷ÉϸüС£Ö»ÒªdidDeactivate»¹Ã»Óе÷Ó㬾ÍÄÜ˳ÀûÍê³É¸üУ¨×¢Ò⣺½çÃæÔªËØ²»ÄÜÓÃdidDeactivate¸üУ©¡£ÕâÒ²¾ÍÒâζ×Å£º¿ª·¢ÕßÏë Òª¸üÐÂÒ»¸öµ±Ç°Òþ²ØÆðÀ´µÄÊÓͼ¿ØÖÆÆ÷£¨±ÈÈç²é¿´Ò»¸öģ̬¿ØÖÆÆ÷¡°on top¡±£©£¬¾Í±ØÐëÓõ±Ç°¿ØÖÆÆ÷µÄwillActive·½·¨À´¸üУ¬¶øwillActiveÖ»ÓÐÔÚÈ¡Ïû£¨dismiss£©Ä£Ì¬¿ØÖÆÆ÷ʱ²ÅÄܱ»µ÷Óá£
4. addCachedImage:nameȱʡʹÓÃPNG±àÂë
³ýÁËWatchKitÓ¦ÓÃÀ¦°ó°üÀïµÄ×ÊÔ´£¬Ã¿¸öÓ¦Óû¹ÏíÓÐ5MBÈÝÁ¿µÄͼƬ»º´æ¿Õ¼ä£¬ÓÃWKInterfaceDeviceÉϵķ½·¨À´·ÅÖÃÀ©Õ¹£¬²¢ÓÃÀ©Õ¹½øÐйÜÀí¡£´ÓÀ©Õ¹ÏòWatch·¢ËÍͼƬ»áÏûºÄʱ¼äºÍµçÁ¿£¬ËùÒÔÈç¹ûÒªÔÙ´ÎʹÓÃijÕÅͼƬ£¨¼´Ê¹Ö»ÓùýÒ»´Î£©£¬×îºÃ½«Ëü»º´æÆðÀ´£»Èç¹ûÓÃaddCachedImage:name:À´·¢ËÍͼƬ£¬Ëü»á×Ô¶¯ÒÔPNG¸ñʽ»º´æÆðÀ´£¨Ò²ÐíPNG¸ñʽ²¢²»ÊÇ×îºÏÊʵ쬵«ÖÁÉÙÊÇ×î±£Ïյģ©¡£Èç¹ûͼƬÄÜÒÔJPG¸ñʽÔٴγÊÏֵϰ£¬ÄÇô½¨Òé¸ÄÓÃaddCachedImageWithData:name: À´·¢ËÍ¡£ÒÔJPG¸ñʽ´¢´æÍ¼Æ¬ºóÔÙÊÔÊÔ»ÃæÉèÖã¬Í¼Æ¬×ª»»²»½ö¸ü¿ì£¬»¹Ê¡ÏÂÁ˲»ÉÙ»º´æ¿Õ¼ä£¬·½±ã´¢´æ¸ü¶àͼƬ¡£
5. Ö§³Öºǫ́Ï̻߳º´æÍ¼Ïñ
ÒÀÈ»¸úÉÏÒ»Ìõ½¨ÒéÏà¹Ø£º¿ª·¢Õß¿ÉÒÔÔÚºǫ́Ïß³ÌÉÏ»º´æÍ¼Æ¬£¨¿ª·¢ÕßÂÛ̳µÄÒ»ÃûÆ»¹ûÔ±¹¤ÈçÊÇ˵£©¡£ÎÒÔÚ¿ª·¢WatchÓ¦ÓÃʱ³¢ÊÔÁËһϣ¬Í¼Æ¬ÔÚ¶Áȡ֮ǰ¾Í»º´æºÃÁË¡£
6. ¿ª·¢ÕßÐè×ÔÐзâװͼƬ¹ÜÀíÆ÷
ҪʹÓÃÉÏÊöµÄͼƬ»º´æµÄ»°£¬²¢ÎÞÄÚÖõķ½·¨À´¼ì²â×îÔçµÄͼƬ¡£ÈôÓ¦ÓÃͬʱ¹ÜÀíºÜ¶àͼƬ£¬¿ÉÄÜÐèÒªÔÚ»º´æÀïÉèÁ¢Ò»¸öµ¥¶ÀµÄ¹ÜÀíÆ÷¡£
7. ²âÊÔ֪ͨ¹¦ÄÜʱ¼ÇµÃ¹Ø±ÕÊÖÍó¸ÐÓ¦
ÔÚApple WatchÉϲâÊÔ֪ͨ¹¦ÄÜʱ£¬ÐèÒªÔÚÆäCompanion£¨»ï°é£©Ó¦ÓõÄͨÓÃÉèÖÃÀï¹ØµôWrist Detection£¨ÊÖÍó¸ÐÓ¦£©¡£
8. ÈôÒªÇ¿ÖÆÍ˳öÓ¦Ó㬳¤°´²à¼ü´ò¿ªFriendsÓ¦ÓÃ
ÒªÇ¿ÖÆÍ˳öÓ¦Ó㬾͵¥»÷²à¼ü´ò¿ªFriendsÓ¦Óã¬È»ºóÔÙ°´Ò»´Î£¨×¢Òâ£¬Ç¿ÖÆÍ˳öÓ¦Óò»´ú±íÇ¿ÖÆÍ˳öÀ©Õ¹£©¡£
9. ¾¡¿ÉÄܵؾ«¼òwillActivate²Ù×÷£¬Ëõ¶Ì¼ÓÔØÊ±¼ä¡£
10. ÏÈWatchºóiPhone App
Èç¹ûÓû§ÔÚÄãµÄiPhoneÓ¦ÓÃ֮ǰÇÀÏÈ·¢²¼Watch App¾Í²»ÃîÁË£¬ËùÒÔÁôµãÐÄ£¬±ðÈÃÆ»¹ûµÄÓ¦ÓÃÉóºË¿ìÄãÒ»²½·¢ÏÖÎÊÌâ¡£
11. Çмɴ¦Àí´óͼƬ
WatchÓ¦ÓÃÊÇÒÔÀ©Õ¹µÄÐÎʽÔËÐе쬯䱾ÉíÄÚ´æÏà±ÈiPhoneÓ¦ÓøüÊÜÏÞÖÆ£¬ËùÒÔÏñÊÇÉÔ´óµãµÄͼƬ£¬»¹ÊÇÁô¸øiPhoneÓ¦Óô¦Àí¾ÍºÃ£¨ÓÃopenParentApplication:reply:£©¡£»¹Òª×¢Ò⣬ģÄâÆ÷²»ÊÜÄÚ´æÏÞÖÆ£¬ËùÒÔ×îºÃ»¹ÊÇÔÚÕæ»ú»·¾³ÖнøÐвâÊÔ¡£
12. ͨ¹ý¹²ÏíNSUserDefaultsÉèÖò¼¶ûÖµ¼ì²âÆ¥Åä
Òª²âÊÔÓ¦ÓÃÊÇ·ñ¸úWatchÆ¥Å䣬¿ÉÒÔÔÚ¹²ÏíÓ¦ÓÃ×éÖÐͨ¹ý¹²ÏíNSUserDefaultsÉèÖÃÒ»¸ö²¼¶ûÖµÀ´½øÐмì²â¡£
13. ʵÏÖiPhoneÓëApple WatchµÄÊý¾Ýͬ²½
ÒªÏëʵÏÖiPhoneºÍWatchµÄÊý¾Ýͬ²½£¬ÒªÃ´ÓÃopenParentApplication:reply:À´ÈÃiPhoneÓ¦ÓÃÖ´ÐÐËùÓÐÊý¾Ý¸üУ¬ÒªÃ´Ê¹ÓÃDarwin notificationsÔÚÀ©Õ¹ºÍiPhoneÓ¦ÓÃÖ®¼ä·¢ËÍʼþ¡£Darwin notifications²»Ö§³ÖÊý¾Ý¸ºÔØ£¬Èç¹ûÏëÓÃ֪ͨÀ´´«ËÍÊý¾ÝµÄ»°£¬¿ÉÒÔ¿´Ò»¿´ MMWormholeͨѶ¿ò¼Ü£¬Äã»áÓÐËùÆô·¢¡£

14. ¶¨Ê±Æ÷ˢнçÃæÔªËØ
¿ÉÒÔÓö¨Ê±Æ÷£¨»òÔÚwillActiveÀ¸üкÍˢнçÃæÔªËØ¡£µ±È»£¬ÔÚÊý¾ÝÔ´Ö§³ÖµÄÇé¿öÏÂÒ²¿ÉÒÔÓÃKVO¡£ÎÒÔÚ¿ª·¢WatchÓ¦ÓÃʱÔËÓÃÁËKVO£¬ÓÃÕâ¸ö·½·¨£¬ÔªËØÖ»ÓÐÔÚ²úÉú±ä»¯Ê±²Å¸üУ¬ÕâÑùÄܽÚÊ¡´«Êä¸ºÔØºÍµçÁ¿¡£
15. awakeWithContext´«selfÖ¸ÕëºÜÓÐÓÃ
ÈôҪ׷×ÙÊÓͼ¿ØÖÆÆ÷£¬¿ÉÒÔ¿¼ÂÇÓÃawakeWithContextÀ´´«µÝselfÖ¸Õë¡£
16. when-in-use
WatchKitÀ©Õ¹ÊÇǰ̨À©Õ¹£¨foreground extension£©£¬ËùÒÔÔÚÓõ½Core LocationÐí¿Éʱ£¬Ö»Ðè·¢ËÍÒ»¸öwhen-in-use£¨Ê¹ÓÃʱ£©ÈÏÖ¤ÇëÇó¾ÍºÃ¡£
17. ÉÙÓá°ÊµÊ±¸üС±
³ý·ÇÍò²»µÃÒÑ£¬·ñÔò²»ÒªÊ¹Óá±ÊµÊ±¸üУ¨live update£©¡°£¬Ê¹iPhoneºÍWatch¼´¿Ìͬ²½¡£Óû§Ò»°ã²»»áͬʱʹÓÃÁ½¸öÉ豸£¬ËùÒÔÔÚiPhone»òWatchÆô¶¯Ê±¸üÐÂÊý¾Ý£¬×ãÒÔ±ÜÃâÖî¶à»ìÂÒµÄͬ²½Âß¼¡£¿Éϧ£¬Ò»¿´µ½²¢ÁеÄÄ£ÄâÆ÷ÆÁÄ»¾ÍÏëÉèÁ¢¸´ÔÓµÄͬ²½Âß¼£¬ÎҾ͸ɹýÕâÑùµÄʶù¡£
18. ÓÃhide/unhide´úÂë¹¹½¨¶¯Ì¬ÊÓͼ½çÃæ
ËäÈ»ÎÞ·¨ÓóÌÐò½¨Á¢ºÍ¹ÜÀí½çÃæ¿ØÖÆÆ÷£¬µ«hide/unhideÔªËØ»¹ÊǾ¡ÔÚÕÆ¿ØµÄ¡£¾Ù¸öÀý×Ó£¬WatchKit×î³£¼ûµÄ²Ù×÷Ö®Ò»¾ÍÊǹ¹½¨Ò»¸ö¿ÉÒÔÏÔʾËùÓÐÐÅÏ¢µÄÒ³Ãæ¡£»òÕßÔÚ±à³ÌÖУ¬Èç¹ûÒªÔÚÁ½¸ö²¼¾ÖÖÐÑ¡ÆäÒ»£¬ÄÇô¿É½«Æä°²·ÅÔÚtop-level groupÀ½öÔÚ±ØÒªÊ±ÏÔʾ»òÒþ²Ø¡£
19. ÿ´ÎÆÁÄ»µã»÷ºÍ½çÃæ¸üж¼ÐèÒªWatchÓëiPhoneµÄÍù·µÍ¨ÐÅ£¬ÔÚ±à³ÌʱҪ¿¼Âǵ½ÕâÒ»µã¡£
20. ¼Ç¼ֵ¾ö¶¨ÔÙ´ÎдÈë¸üÐÂ
ÓÉÓÚWatchKit½çÃæÔªËØµÄ¡°Ö»Ð´¡±ÌØÐÔ£¨Ö»ÄÜÉ趨º¯Êý£©£¬¿ª·¢Õß²»ÐèÒª¶þ´ÎÉ趨׷×ټǼµÄÖµ£¬¶øWatchKit»¹ÄܶÔÖµ½øÐкϲ¢£¬Ö»ÔÚÔËÐÐÑ»·½»½Óʱ·¢ËÍ×îÖÕÖµ£¬µ«Òà¿É×ÔÐÐ×·×Ù¡£
21. ÎÞÄÚÖõĽø¶ÈָʾÆ÷
Watch²¢Ã»ÓÐÄÚÖõĽø¶ÈָʾÆ÷¿Ø¼þ£¬µ«ÏµÁж¯»Í¼ÏñµÄÏÔʾºÍ³ÖÐøµÄͼƬת»»ÏÂÔØÒÀÈ»ÄÜͬʱ½øÐС£²Ù×÷½áÊøÊ±£¬Ö±½ÓÒþ²Ø½ø¶ÈָʾÆ÷ͼƬ¼´¿É¡£ÔÚ´Ë£¬´ó¼Ò¿ÉÒÔ³¢ÊÔÒ»ÏÂÎÒ¸Õ¸ÕÔÚGitHubÉϸüÐ嵀 JBWatchActivityIndicator£¬ËüÄÜÈô´½¨»î¶¯Ö¸Ê¾Æ÷ͼƬÐòÁбäµÃ¸ü¼òµ¥£¬Ô¤ÏÈäÖȾµÄÀàÆ»¹ûÐòÁÐÒ²°üº¬ÔÚÄÚ¡£
22. Ò»¶¨Òª³ä·ÖÀûÓÃApple Watch Design Resources
¿ª·¢Apple WatchÓ¦Óã¬Ò»¶¨ÒªÏÂÔØ Apple Watch Design Resources²¢ÈÏÕæÔĶÁ£¬ÀïÃæ³ýÁËÑÕÉ«ºÍ³ß´ç½¨ÒéÍ⣬ÓÅÖʵı߿òͼƬ»¹¿ÉÒÔ½ØÏÂÀ´¸øÓ¦Óôò¹ã¸æ¡£Ëµµ½ÕâÀï×¢ÒâһϣºÌá½»µÄÓ¦ÓýØÍ¼ÊDz»ÄÜ´ø±ß¿òµÄ¡£
23. ½â¾öÕæ»úͼƬÏÔʾÒì³£ÎÊÌâ
ͼƬÔÚÄ£ÄâÆ÷ÀïÏÔʾÕý³££¬µ«ÔÚÕæÕýµÄWatchÉÏÈ´³öÁËÎÊÌ⣬Èÿª·¢ÕßÃǽп಻µü£¬Êµ¼ÊÉÏÕâÒ²ÊÇÖî¶àÓ¦Óñ»¾ÜµÄ¸ù±¾ÔÒò¡£ÎÊÌâ¾Í³öÔÚÎļþÃüÃûºÍ¡±ÁãÉ¢¡°µÄͼƬÎļþÉÏ£¬¶ø×î±£Ïյİ취¾ÍÊÇÔÚWatch Ó¦Ó㨷ÇÀ©Õ¹£©µÄtargetÀィ¸öassetsÀ´´æ´¢ËùÓÐͼÏñ¡£
24. ʹÓÃHandoffÈÃiPhoneÓ¦ÓÃǰ̨Æô¶¯
Ŀǰ£¬»¹Ã»ÓÐÃ÷È·µÄ°ì·¨¿ÉÒÔÖ±½Óͨ¹ýWatchǰ̨Æô¶¯iPhoneÓ¦Óã¨ËäÈ»¿ÉÒÔÔÚÄ£ÄâÆ÷ÉÏʵÏÖ£©£¬ËùÒÔ£¬»¹ÊÇ¿¼ÂÇʹÓÃÆ»¹ûµÄHandoffÀ´´úÌæ°É¡£
25. ¿ØÖÆÆ÷¼äʹÓÃNSNotificationsͨÐÅ
ÔÚÊÓͼ¿ØÖÆÆ÷Ö®¼äµÄͨÐÅ×îºÃ±ðÓÃawakeWithContext:£¬·¢ËÍNSNotificationsºÃһЩ£¬ÔÚÀ©Õ¹ÀïÔËÐиüÁ÷³©¡£Ò²¿ÉÒÔ¿´¿´ÎÒ¿ªÔ´µÄWKInterfaceController×ÓÀà JBInterfaceController£¬Ê¹ÓÃίÍÐģʽ¡£
26. ±¾µØÍ¨ÖªÐèÒªÉèÖÃsoundNameÊôÐÔÀ´´¥·¢Tapic·´À¡ºÍÌáʾÒô¡£
27. Õæ»ú²âÊÔºÜÖØÒª£¡
´ÓÄ£ÄâÆ÷ÈëÊÖÊÇͦºÃ£¬µ«ÊÇÔÚÕæ»ú»·¾³ÖвâÊÔ×Ô¼ºµÄWatchÓ¦ÓòÅÊÇ×î¹Ø¼üµÄÒ»²½£¨ÉõÖÁ±È²âÊÔiPhone»òiPadÓ¦ÓøüÖØÒª£©¡£ |