Slide 1

Slide 1 text

"DDFTTJOH UIF.VTJD-JCSBSZ ؔ੢ϞόΠϧΞϓϦݚڀձ JE4JYFJHIU

Slide 2

Slide 2 text

·͓͖͑ w JE4JYFJHIU !UPNPIJ@SP w ג ͸ͯͳ w J1IPOF͚ͩͨ͘ w

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

㊗"QQMF.VTJDղې

Slide 7

Slide 7 text

௥Ճ͞Εͨ"1*ʢൈਮ w 4,$MPVE4FSWJDF$POUSPMMFS w .1.FEJB-JCSBSZ w BEE*UFN8JUI1SPEVDU*%DPNQMFUJPO)BOEMFS w .1.VTJD1MBZFS$POUSPMMFS w TFU2VFVF8JUI4UPSF*%T

Slide 8

Slide 8 text

4,$MPVE4FSWJDF$POUSPMMFS w BVUIPSJ[BUJPO4UBUVT w SFRVFTU"VUIPSJ[BUJPO @ w SFRVFTU$BQBCJMJUJFT8JUI$PNQMFUJPO)BOEMFS @ w SFRVFTU4UPSFGSPOU*EFOUJpFS8JUI$PNQMFUJPO)B OEMFS @

Slide 9

Slide 9 text

4,$MPVE4FSWJDF$POUSPMMFS w BVUIPSJ[BUJPO4UBUVT w SFRVFTU"VUIPSJ[BUJPO @ w SFRVFTU$BQBCJMJUJFT8JUI$PNQMFUJPO)BOEMFS @ w SFRVFTU4UPSFGSPOU*EFOUJpFS8JUI$PNQMFUJPO)B OEMFS @

Slide 10

Slide 10 text

switch SKCloudServiceController.authorizationStatus() { case .Authorized: // ڐՄ͞Ε͍ͯΔ case .Denied: // ڐՄ͞Ε͍ͯͳ͍ case .NotDetermined: // ͲͪΒ͔ܾ·͍ͬͯͳ͍ (ڐՄΛٻΊΔඞཁ͕͋Δ) case .Restricted: // Ұ෦ͷػೳ͕ڐՄ͞Ε͍ͯΔ }

Slide 11

Slide 11 text

4,$MPVE4FSWJDF$POUSPMMFS w BVUIPSJ[BUJPO4UBUVT w SFRVFTU"VUIPSJ[BUJPO @ w SFRVFTU$BQBCJMJUJFT8JUI$PNQMFUJPO)BOEMFS @ w SFRVFTU4UPSFGSPOU*EFOUJpFS8JUI$PNQMFUJPO)B OEMFS @

Slide 12

Slide 12 text

SKCloudServiceController.requestAuthorization { status in guard status == .Authorized || status == .Restricted else { return } // ڐՄ͞Εͨʂ }

Slide 13

Slide 13 text

ݖݶ w ֬ೝͷμΠΞϩά͕ग़ΔͷͰ ϢʔβʔʹڐՄͯ͠΋Β͏ඞ ཁ͕͋Δ

Slide 14

Slide 14 text

ݖݶ w .&%*"@-*#3"3:ͱ͍͏ͷ ͕૿͑ͯΔ w ͜Ε͕༗ޮͰͳ͍ͱԿ΋ग़དྷ ͳ͍ w ϓϥΠόγʔͷઃఆʹ΋௥Ճ ͞Ε͍ͯΔ

Slide 15

Slide 15 text

4,$MPVE4FSWJDF$POUSPMMFS w BVUIPSJ[BUJPO4UBUVT w SFRVFTU"VUIPSJ[BUJPO @ w SFRVFTU$BQBCJMJUJFT8JUI$PNQMFUJPO)BOEMF S @ w SFRVFTU4UPSFGSPOU*EFOUJpFS8JUI$PNQMFUJPO)B OEMFS @

Slide 16

Slide 16 text

let controller = SKCloudServiceController() controller.requestCapabilitiesWithCompletionHandler { (capabilities, error) in if let error = error { print(error) fatalError() } if capabilities.contains(.MusicCatalogPlayback) { // ࠶ੜՄೳ } if capabilities.contains(.AddToCloudMusicLibrary) { // ϥΠϒϥϦ΁ͷ௥ՃՄೳ } }

Slide 17

Slide 17 text

4,$MPVE4FSWJDF$POUSPMMFS w BVUIPSJ[BUJPO4UBUVT w SFRVFTU"VUIPSJ[BUJPO @ w SFRVFTU$BQBCJMJUJFT8JUI$PNQMFUJPO)BOEMFS @ w SFRVFTU4UPSFGSPOU*EFOUJpFS8JUI$PNQMFUJP O)BOEMFS @

Slide 18

Slide 18 text

4UPSFGSPOU*% w ֤ࠃͷJ5VOFT4UPSFΛද͢*% w "1*Ͱ͸Ϣʔβʔ͕"QQMF.VTJDͷܖ໿Λ͍ͯ͠ Δࠃͷ*%ΛऔಘͰ͖Δ w ࠃ͝ͱʹ1SPEVDU*%͕มΘΔͷͰॏཁ w ͨͩ͠ʮ ʯͷΑ͏ͳ*%ʹͳ͍ͬͯ ΔͷͰඇৗʹѻ͍ͮΒ͍ ͚ͩཉ͍͠

Slide 19

Slide 19 text

IUUQTB⒏MJBUFJUVOFTBQQMFDPNSFTPVSDFTEPDVNFOUBUJPOMJOLJOHUPUIFJUVOFTNVTJDTUPSFTUPSFGSPOU

Slide 20

Slide 20 text

४උ׬ྃ ⾣

Slide 21

Slide 21 text

࠶ੜ͢Δ w .1.VTJD1MBZFS$POUSPMMFS w TFU2VFVF8JUI4UPSF*%T

Slide 22

Slide 22 text

4UPSF*%

Slide 23

Slide 23 text

\ XSBQQFS5ZQFUSBDL LJOETPOH BSUJTU*E DPMMFDUJPO*E USBDL*E BSUJTU/BNFϏʔτϧζ DPMMFDUJPO/BNF5IF#FBUMFT 5IF3FE"MCVN USBDL/BNF")BSE%BZT/JHIU DPMMFDUJPO$FOTPSFE/BNF5IF#FBUMFT 5IF3FE"MCVN USBDL$FOTPSFE/BNF")BSE%BZT/JHIU BSUJTU7JFX6SMIUUQTJUVOFTBQQMFDPNKQBSUJTUCJUPSV[VJE VP DPMMFDUJPO7JFX6SMIUUQTJUVOFTBQQMFDPNKQBMCVNBIBSEEBZTOJHIUJE USBDL7JFX6SMIUUQTJUVOFTBQQMFDPNKQBMCVNBIBSEEBZTOJHIUJE QSFWJFX6SMIUUQBQIPCPTBQQMFDPNVTS.VTJDWG BSUXPSL6SMIUUQJTN[TUBUJDDPNJNBHFUIVNC.VTJDWGBEDGBE BSUXPSL6SMIUUQJTN[TUBUJDDPNJNBHFUIVNC.VTJDWGBEDGBE BSUXPSL6SMIUUQJTN[TUBUJDDPNJNBHFUIVNC.VTJDWGBEDGB DPMMFDUJPO1SJDF USBDL1SJDF

Slide 24

Slide 24 text

IUUQTB⒏MJBUFJUVOFTBQQMFDPNSFTPVSDFTEPDVNFOUBUJPOJUVOFTTUPSFXFCTFSWJDFTFBSDIBQJTFBSDIJOH

Slide 25

Slide 25 text

ཉ͔ͬͨ͠΋ͷ w ࠶ੜ͍ͯ͠Δۂͷ4UPSF*% 1SPEVDU*% Λήοτ ͯ͠ڞ༗ͨ͠Γ͍ͨ͠ w J5VOFT4FBSDI"1*Ͱݕࡧͯ͠4UPSF*%Λήοτ ͢Δඞཁ͕͋Δ ݱ࣮

Slide 26

Slide 26 text

4UPSF*%͕෼͔ͬͯ ͍Δલఏͷ"1*

Slide 27

Slide 27 text

let player = MPMusicPlayerController.systemMusicPlayer() player.setQueueWithStoreIDs(["154657357", "1033055855"]) player.play()

Slide 28

Slide 28 text

let player = MPMusicPlayerController.systemMusicPlayer() player.setQueueWithStoreIDs(["154657357", "1033055855"]) player.play() ஫ɿ೔ຊͷJ5.4Ͱ͔͠༗ޮ͡Όͳ͍

Slide 29

Slide 29 text

DPMMFDUJPO7JFX6SMIUUQTJUVOFTBQQMFDPNKQBMCVNBIBSEEBZTOJHIUJE USBDL7JFX6SMIUUQTJUVOFTBQQMFDPNKQBMCVNBIBSEEBZTOJHIUJE QSFWJFX6SMIUUQBQIPCPTBQQMFDPNVTS.VTJDWG BSUXPSL6SMIUUQJTN[TUBUJDDPNJNBHFUIVNC.VTJDWGBEDGBE BSUXPSL6SMIUUQJTN[TUBUJDDPNJNBHFUIVNC.VTJDWGBEDGBE BSUXPSL6SMIUUQJTN[TUBUJDDPNJNBHFUIVNC.VTJDWGBEDGB DPMMFDUJPO1SJDF USBDL1SJDF SFMFBTF%BUF5; DPMMFDUJPO&YQMJDJUOFTTOPU&YQMJDJU USBDL&YQMJDJUOFTTOPU&YQMJDJU EJTD$PVOU EJTD/VNCFS USBDL$PVOU USBDL/VNCFS USBDL5JNF.JMMJT DPVOUSZ+1/ DVSSFODZ+1: QSJNBSZ(FOSF/BNFϩοΫ JT4USFBNBCMFUSVF ^

Slide 30

Slide 30 text

ϥΠϒϥϦʹ௥Ճ͢Δ w .1.FEJB-JCSBSZ w BEE*UFN8JUI1SPEVDU*%DPNQMFUJPO)BOEMFS

Slide 31

Slide 31 text

͜Ε͕ग़དྷΔ

Slide 32

Slide 32 text

let mediaLibrary = MPMediaLibrary.defaultMediaLibrary() mediaLibrary.addItemWithProductID("1078914477") { (entities, error) in if let error = error { print(error) fatalError() } // ௥Ճ׬ྃ }

Slide 33

Slide 33 text

ࡶଟͳ࿩ w ͢Ͱʹ௥ՃࡁͷۂΛ௥Ճͯ͠΋େৎ෉ w "1*Ͱ௥Ճͯ͠΋ΞʔτϫʔΫ͸औಘ͞Εͳ͍ w .VTJDΞϓϦͰ։͍ͨΓ͢Δ͔͠ͳ͍ʁ w ফ͢͜ͱ͸ग़དྷͳ͍ͷͰςετͰڵຯͳ͍ۂΛ௥Ճ͠· ͘ΔͱͭΒ͍ w ࠶ੜ΋͚ͩΕͲΞϧόϜͷ4UPSF*%Λࢦఆ͢ΔͱɺΞ ϧόϜ಺ͷશۂ͕ର৅ʹͳΔ

Slide 34

Slide 34 text

ໝ૝

Slide 35

Slide 35 text

w 1MBZMJTUͷڞ༗ w ଞਓ͕࡞ͬͨ1MBZMJTUΛฉ͍ͨΓ ϥΠϒϥϦʹ௥Ճग़དྷΔ w ϥδΦ w ΈΜͳͷϦΫΤετʹΑͬͯ 1MBZMJTUΛ࡞ͬͯΞϓϦ͔Βಉ࣌ ʹௌ͘ w ʜ w ͳΜ͔΋͏ͪΐͬͱ"1*͕ཉ͍͠ʂ

Slide 36

Slide 36 text

ؔϞό Ұ೥ʂ ͓ΊͰͱ͏͍͟͝·͢