ä»æ¥ã
ç§ãã¡ã®ããŒãã㌠-Music Paradiseã®éçºè
-ã¯ãããã°ã®èªè
ã®ããã«æ°ããè³æãæºåããŸããã ä»åã¯ãApple Musicãèªåã®ã¢ããªã±ãŒã·ã§ã³ã«çµ±åããæ¹æ³ã«ã€ããŠè©³ãã説æããŸãã åæ§ã®çµéš
ã¯ãã§ã«Habréã§
説æãããŠããŸãããMusic Paradiseã®éçºè
ã«ããèšäºã¯ãèªè
ã«ãã®ããã»ã¹ãç¥ã£
ãŠãããããã§ã¯ãªããApple Musicã§äœæ¥ããéã«ããã«ã€ããŠããããŠéèŠã§ã¯ãããæããã§ã¯ãªãããã€ãã®ç¹ã«ã€ããŠè©³ãã話ãããšãç®çãšããŠããŸãã
ãiOS 9.3ã®ãªãªãŒã¹ã«ãããApple Corporationã¯Apple MusicãµãŒãã¹ã䜿çšããŠé³æ¥œãåçã§ããããã«ãªããŸããã ãã®æ©èœãè©ŠããŠã
Music Paradise Playerã¢ããªã±ãŒã·ã§ã³ã§äœæ¥ããããšã«ããŸããã ãã®çµéšã¯éåžžã«æçã§ãã-ã·ã¹ãã ã«ããã€ãã®èœãšãç©ŽãšåŒ±ç¹ãçºèŠãããŸããããããã¯äºåã«ç¥ãã®ã«åœ¹ç«ã¡ãŸãã ãã®èšäºã§ã¯ãApple Musicã䜿çšããäž»ãªãã€ã³ããšããã®ã·ã¹ãã ã®ããã€ãã®æ©èœã«ã€ããŠç°¡åã«èª¬æããŸãã
Apple Musicãžã®ã¢ã¯ã»ã¹ã確èªãã
éçºè
åãã®Apple MusicãµããŒãã¯ãããŒãžã§ã³9.3以éã®SDKã§å©çšã§ãããããã¢ããªã±ãŒã·ã§ã³ã以åã®ããŒãžã§ã³ã®iOSçšã«éçºãããå Žåããã®äŸå€ãåŠçããå¿
èŠããããŸãã
Apple Musicãåçã§ãããã©ããã確èªãã次ã®ã¹ãããã¯ãSKCloudServiceControllerãžã®èªèšŒãªã¯ãšã¹ãã§ãã
[SKCloudServiceController requestAuthorization:^(SKCloudServiceAuthorizationStatus status) {
ã¹ããŒã¿ã¹ã«ã¯ããã€ãã®å€ããããŸãã
- SKCloudServiceAuthorizationStatusAuthorized-ãã¹ãŠãæ£åžžã§ãã ãããç§ãã¡ã®ç®æšã¹ããŒã¿ã¹ã§ããä»ã®å Žåãé³æ¥œãå®å
šã«åçããããšã¯ã§ããŸããã
- SKCloudServiceAuthorizationStatusDenied-ãŠãŒã¶ãŒãããã€ã¹ã®ã©ã€ãã©ãªãžã®ã¢ããªã±ãŒã·ã§ã³ã¢ã¯ã»ã¹ãæåŠããããããã以äžé²ãããšã¯ã§ããŸããã ãã®ç¶æ³ã§ã®è¯ãæ¹æ³ã¯ããŠãŒã¶ãŒãèšå®ã«ã¢ã¯ã»ã¹ããŠæåã§ã¢ã¯ã»ã¹ã§ããããã«ããããšã§ãã
- SKCloudServiceAuthorizationStatusRestrictedã¯åãæåŸ
ã¯ããã®çµæã§ãããå¯äžã®éãã¯ããŠãŒã¶ãŒãå¶åŸ¡ã§ããªãç¶æ³ã®ããã«ã¢ã¯ã»ã¹ã§ããªãããšã§ãã
ãã®å ŽåããŠãŒã¶ãŒããããã¢ãããŠã£ã³ããŠã§åçãéžæããŠäœæ¥ãç¶ããå¿
èŠããããããSKCloudServiceAuthorizationStatusNotDeterminedã®ã¹ããŒã¿ã¹ãåãåãããšãã§ããªãããšã«æ³šæããŠãã ããã ãããã£ãŠããã®ãªãã·ã§ã³ãåŠçããŠãæå³ããããŸããã
ãŠãŒã¶ãŒã®ã©ã€ãã©ãªãžã®ã¢ã¯ã»ã¹ãããã£ãã®ã§ããŠãŒã¶ãŒãApple Musicã®ãµãã¹ã¯ãªãã·ã§ã³ãæã£ãŠãããã©ããã確èªããå¿
èŠããããŸãã
SKCloudServiceController *controller = [[SKCloudServiceController alloc] init]; [controller requestCapabilitiesWithCompletionHandler:^(SKCloudServiceCapability capabilities, NSError * _Nullable error) {
ããã«ã¯å€ãã®ã¹ããŒã¿ã¹ãªãã·ã§ã³ããããŸãããåãå
¥ããããã®ã¯2ã€ã ãã§ãã
- SKCloudServiceCapabilityMusicCatalogPlayback-ãŠãŒã¶ãŒã¯Apple Musicããé³æ¥œãåçã§ããŸããiCloudã©ã€ãã©ãªã¯ãªãã«ãªã£ãŠããŸãã
- SKCloudServiceCapabilityAddToCloudMusicLibrary-ãŠãŒã¶ãŒã¯Apple Musicããé³æ¥œãåçã§ããiCloudã©ã€ãã©ãªããªã³ã«ãªã£ãŠããŸãã
å¿
èŠã«å¿ããŠã倱æããSKCloudServiceCapabilityNoneïŒãŠãŒã¶ãŒã¯Apple Musicã®ãµãã¹ã¯ãªãã·ã§ã³ãæã£ãŠããªãïŒãåŠçããããšãã§ããŸããã€ãŸãããŠãŒã¶ãŒããµãã¹ã¯ã©ã€ãã«æåŸ
ããŸãã
ãã©ãã¯ãªã¹ããªã¯ãšã¹ã
iTunes Search APIã«åºäŒã£ãããšããªã人ã«ãšã£ãŠã¯ãããããã©ãã¯ã®æ€çŽ¢ãšåºåã¯éåžžã«è€éãªããã»ã¹ã§ãã æ確ã«ããããã«ãããã€ãã®ãã€ã³ãã«åããŸãã
ããŒã¯ãŒãæ€çŽ¢
ãªã¯ãšã¹ãã®äžè¬çãªãã¥ãŒã¯æ¬¡ã®ãšããã§ãã
itunes.apple.com/search?term=%@&limit=%ld&s=%@&entity=song&explicit=Noåãã©ã¡ãŒã¿ãŒãåæããŸãããïŒ
çšèª -æ€çŽ¢ã¯ãšãªã çæããŠãã ããïŒè€æ°ã®åèªã§æ§æãããŠããå Žåã¯ãã¹ããŒã¹ã+ã«çœ®ãæããå¿
èŠããããŸãïŒããããããã¯å€ãã®äººã«ãšã£ãŠæããã§ãããæå®ãã䟡å€ããããŸãïŒã
å¶é -çµæã®æ倧æ°ã ããã§ã¯ãã¹ãŠãçŽæçã§ãã ããã©ã«ãå€ã¯50ã§ãããå Žåã«ãã£ãŠã¯ããã§ååã§ã¯ãªãå ŽåããããŸãã
S ïŒAppleã«ããè¯å¥œãªåäœãååã«ãã£ãŠãã¹ãŠãããã«æ確ã«ãªããŸãïŒ-ãã®æ€çŽ¢åŒæ°ã¯å¿
é ã§ããããŠãŒã¶ãŒã¢ã«ãŠã³ãããªã³ã¯ãããŠããApp Storeã®åœã瀺ããŸãã å®éã®ãšãããApple Musicã®ããŸããŸãªåœã§ã¯ããŸããŸãªæ¥œæ²ãæäŸãããŠããŸãã ããã«ãåããã©ãã¯ãç°ãªãåœã§ç°ãªãèå¥åãæã€å ŽåããããŸãã
ç¹å®ã®ãŠãŒã¶ãŒã®ãã®èå¥åãååŸããã«ã¯ã次ã䜿çšããŸãã
SKCloudServiceController *controller = [[SKCloudServiceController alloc] init]; [controller requestStorefrontIdentifierWithCompletionHandler:^(NSString * _Nullable storefrontIdentifier, NSError * _Nullable error) { if(!error) { storeID = storefrontIdentifier;
ãšã³ãã£ãã£ã¯å¿
èŠãªãšã³ãã£ãã£ã§ãããç§ãã¡ã®å Žåã¯æã§ãã
æ瀺ç -åãšãçãªã³ã³ãã³ããæ€çŽ¢çµæã«å«ãããã©ããã決å®ããŸãã ãŸããã¢ããªã±ãŒã·ã§ã³ã®å¹Žéœ¢å¶éããå§ãã䟡å€ããããŸãã
æ€çŽ¢ã®äœ¿çšã«é¢ãã詳现ã«ã€ããŠã¯ã
ãã¡ããã芧ãã ãã ã
ããããã£ãŒãã®ååŸ
ããããã£ãŒããååŸããã«
ã¯ãAppleã®RSSãã£ãŒããžã§ãã¬ãŒã¿ãŒã䜿çšããå¿
èŠããããŸãã ãžã§ãã¬ãŒã¿ã®åºåã§ããã®ã¿ã€ãã®URLãååŸããŸãã
itunes.apple.com/en/rss/topsongs/limit=100/xmlããã§ã¯ããã·ã¢ã®ããããã©ãã¯ãxml圢åŒã§100åå衚瀺ãããŸãã ç§ã®æèŠã§ã¯ããã®çµæã¯ããã€ãã®çç±ã§ç§ãã¡ã«åããªãã
第äžã«ãåœç€Ÿã®ãªãã¡ãŒã¯åžå Žããã³å€åœã®æ¶è²»è
ã«æäŸãããŠãããããåœãå€æŽããå¿
èŠããããŸãã ãã®ãããruã®ä»£ããã«ãŠãŒã¶ãŒã®çŸåšã®åœã®èå¥åã眮ãæããå¿
èŠããããŸãã
èå¥åãååŸããããã«ãã¡ãã£ãšããããªãã¯ã䜿çšããŸããã IAPã¯ã¢ããªã±ãŒã·ã§ã³ã§æäŸããããããSKProductãååŸããŠæ¬¡ã®ããšãè¡ããŸãã
SKProduct *product =
ãããã£ãŠãURLã§ruã®ä»£ããã«storeCountryã䜿çšããŸãã
ãããŠãç§ãã¡ã«åããªãå¥ã®ç¹ããããŸã-ããã¯åä¿¡ããããŒã¿ã®åœ¢åŒã§ãã ããããããã§ã¯ãã¹ãŠãç°¡åã§ããè¡ã®æåŸã§xmlãjsonã«å€æŽããŸãããã®çµæãããããã£ãŒããæ£ããã¢ããããŒãããããã«ãã®ã¿ã€ãã®URLãååŸããŸãã
itunes.apple.com/%@/rss/topsongs/limit=100/jsoniTunesæ€çŽ¢APIããçŽ æŽãããã«ããŒãååŸããæ¹æ³
iTunesæ€çŽ¢ãã¢ããªã±ãŒã·ã§ã³ã«è¿œå ãããšãã«çºçããå¥ã®åé¡ã¯ãAPIã100x100以äžã®ãã©ãã¯ã®ã«ããŒã¢ãŒããè¿ãããšã§ãã ãã ããã³ãããããŸãã çµæã®jsonã§ã¯é«å質ã®ç»åãžã®ãªã³ã¯ã¯æäŸãããŸãããã次ã®ã¢ã«ãŽãªãºã ã䜿çšããŠååŸã§ããŸãã
- ããŒãartworkUrl100ãã«ããjsonããç»åãžã®ãªã³ã¯ãååŸããŸãã
- çµæã®è¡ã100x100ãã600x600ã«çœ®ãæããŸãã
- 倧ããªç»åãžã®ãªã³ã¯ãååŸããŸãã
Apple Musicãããã©ãã¯ãåçãã
ãã¹ãŠã®æºåãè¡ã£ãåŸãã©ããªã«å¥åŠã«èããããã«ãããããããã®æé ã¯ãApple Musicãã¢ããªã±ãŒã·ã§ã³ã«è¿œå ããããã»ã¹å
šäœã§æãç°¡åã§ãã ãã¬ãŒã€ãŒãåæåããŠãåçãã©ãã¯ã®ãªã¹ããæäŸããã ãã§ãã åçãã©ãã¯ã®ãªã¹ãã¯ããã©ãã¯èå¥åãæã€æååãå«ãé
åã®åœ¢åŒã§èšå®ãããŸãã ã³ãŒããšããŠã¯ã次ã®ããã«ãªããŸãã
-(void)playQuery:(NSArray<NSString*>*)query { self.player = [MPMusicPlayerController applicationQueuePlayer]; [self.player setQueueWithStoreIDs:query]; [self.player play]; }
Apple Musicã§ã®äœæ¥ã«èå³ã®ããæ©èœã§ããããšãããäžåºŠæãåºããŠãã ããã
setQueueWithStoreIDsïŒiOS 9.3以éãSDKã«ç»å ŽããŸãããããã®ç¬éãŸã§ããŠãŒã¶ãŒã®iTunesã©ã€ãã©ãªãåçããããã ãã«MPMusicPlayerControllerã䜿çšã§ããŸããã
æ©èœã®åŠç¿ã§ééããå°é£ã«ã€ããŠè©±ããšãæ€çŽ¢APIããã®jsonesãåŠçããåŸãèŸæžã«ã¯æååã§ã¯ãªãããžã¿ã«å€ãå«ãŸããŠããããšãæãåºãããŸãã ãããç£èŠããå¿
èŠããããŸãã
ãŸãããã®äŸã§ã¯applicationQueuePlayerã䜿çšããŠããããšã«ãèšåãã䟡å€ããããŸãã iOS 10.3ã§ã®ã¿ç»å ŽããŸããããè€æ°ã®ãã©ãã¯ãæäœããŠãããšãããªã¢ãŒãã³ã³ãããŒã«ïŒããã¯ãããç»é¢ãããããã©ã³ãªã©ïŒã§ã¯ã©ãã·ã¥ããããsystemMusicPlayerã«æ¯ã¹ãŠã¯ã©ãã·ã¥ããapplicationMusicPlayerãããåªãããœãªã¥ãŒã·ã§ã³ã®ããã§ãäºå®ã¯ã¢ããªã±ãŒã·ã§ã³ãšã¯ãŸã£ããé¢ä¿ããªãããŠãŒã¶ãŒããã°ã¢ãŠãããåŸã§ãåçãç¶ããããšãã§ããŸãã