Slide 1

Slide 1 text

Apple΢ΥϨοτ / Google΢ΥϨοτʹ νέοτΛอଘ͢Δํ๏ 2024/8/23 iOSDC Japan 2024 day1 muno92

Slide 2

Slide 2 text

ࣗݾ঺հ • ॴଐ: εύΠμʔϓϥεגࣜձࣾ • WebΤϯδχΞ • iOSDC Japan • 2023ʙ ίΞελοϑ

Slide 3

Slide 3 text

iOSDC JapanͷνέοτΛ(Apple|Google) ΢ΥϨοτʹอଘͰ͖ΔΑ͏ʹ͠·ͨ͠ 

Slide 4

Slide 4 text

 Apple΢ΥϨοτ Google΢ΥϨοτ

Slide 5

Slide 5 text

͜ͷ΢ΥϨοτͷཪଆʹ͍ͭͯ࿩͠·͢ 

Slide 6

Slide 6 text

໨࣍ • લఏ • ࣮૷͢Δ͜ͱʹͳͬͨܦҢ • Google΢ΥϨοτ΁ͷอଘํ๏ • Apple΢ΥϨοτ΁ͷอଘํ๏ • ·ͱΊ

Slide 7

Slide 7 text

໨࣍ • લఏ • ࣮૷͢Δ͜ͱʹͳͬͨܦҢ • Google΢ΥϨοτ΁ͷอଘํ๏ • Apple΢ΥϨοτ΁ͷอଘํ๏ • ·ͱΊ

Slide 8

Slide 8 text

Apple΢ΥϨοτ • ༷ʑͳʮύεʯΛiPhoneɾ Apple WatchʹอଘՄೳͳ αʔϏε • ⚠ Ұൠతͳύε͸ʮଞͷछผ ʹ౰ͯ͸·Βͳ͔ͬͨʯ৔߹ ͷΈ࢖༻Մ  ౥৐݊ Ϋʔϙϯ Πϕϯτ ళฮΧʔυ ͦͷଞͷҰൠతͳύε ը૾: https://developer.apple.com/jp/wallet/ ࠓճ͸͜Ε

Slide 9

Slide 9 text

Google΢ΥϨοτ • ༷ʑͳʮύεʯΛAndroidε ϚʔτϑΥϯɾεϚʔτ΢Υο νʹอଘՄೳͳαʔϏε • ⚠ ൚༻ύε͸ʮଞͷछผʹ౰ ͯ͸·Βͳ͔ͬͨʯ৔߹ͷΈ࢖ ༻Մ  খച νέοτ ΞΫηε ݈߁ ൚༻ύε ը૾: https://developers.google.com/wallet?hl=ja ࠓճ͸͜Ε

Slide 10

Slide 10 text

fortee (ϑΥϧς) https://fortee.jp • ΧϯϑΝϨϯεࢧԉγεςϜ • iOSDC JapanΛ࢝Ίɺ༷ʑ ͳΧϯϑΝϨϯεͷӡӦʹ ࢖༻͞Ε͍ͯΔ • WebΞϓϦέʔγϣϯ (PHP੡) • iOSDC Japan ҕһ௕ͷ௕୩ ઒͞Μ͕։ൃ 

Slide 11

Slide 11 text

͜ͷൃදͷλʔήοτ • Apple΢ΥϨοτɾGoogle΢ΥϨοτͷύε࣮૷ํ๏ʹڵຯ͕ ͋Δਓ • Apple΢ΥϨοτͷύε͸࡞ͬͨࣄ͕͋Δ͚ͲGoogle΢ΥϨο τͷύεΛ࡞ͬͨࣄ͸ͳ͍ਓʢor ͦͷٯʣ 

Slide 12

Slide 12 text

࿩͢͜ͱ • WebΞϓϦέʔγϣϯ͔Β ύεΛอଘ͢Δํ๏ • ύεͷߏ੒ɺجຊతͳߟ͑ํ  ࿩͞ͳ͍͜ͱ • εϚʔτϑΥϯΞϓϦ͔Βύ εΛอଘ͢Δํ๏ • ಛఆͷϓϩάϥϛϯάݴޠʹ ґ࣮ͬͨ૷ํ๏

Slide 13

Slide 13 text

͜ͷൃදͷΰʔϧ • Apple΢ΥϨοτɾGoogle΢ΥϨοτͷجຊతͳߟ͑ํΛཧղ ͢Δ • ύεͷ࣮૷ํ๏ʹΠϝʔδ͕༙͘Α͏ʹͳΔ • ʮApple΢ΥϨοτରԠ͚ͩ͡Όͳ͘Google΢ΥϨοτରԠ΋ ͍ͨ͠ΑͶʁʯͳͲݴΘΕͯ΋ख͕ಈ͘Α͏ʹͳΔ 

Slide 14

Slide 14 text

໨࣍ • લఏ • ࣮૷͢Δ͜ͱʹͳͬͨܦҢ • Google΢ΥϨοτ΁ͷอଘํ๏ • Apple΢ΥϨοτ΁ͷอଘํ๏ • ·ͱΊ

Slide 15

Slide 15 text

iOSDC Japan 2023 • forteeͷνέοτϖʔδΛϒϥ΢βͰ։͍ͯQRίʔυΛఏࣔ • ड෇༻QRίʔυͷఏࣔʹखؒऔΔਓ΋͍ͨ • Ξϯέʔτʮ(ཁ໿) Apple΢ΥϨοτʹ௥ՃͰ͖Δͱྑ͍͔ ΋ʯ 

Slide 16

Slide 16 text

਺िؒޙ 

Slide 17

Slide 17 text

🤔ʮApple΢ΥϨοτͷ࣮૷ͬͯͲΜͳײ ͡ͳΜͩΖ͏ʁʯ 

Slide 18

Slide 18 text

Apple Developer Program (༗ྉ) • ͦͬด͡ • Google΢ΥϨοτͷ࣮૷ํ๏Λௐ΂ͯΈΔ͜ͱʹ 

Slide 19

Slide 19 text

https://codelabs.developers.google.com/add-to-wallet-web?hl=ja#0 Node.jsͰ࣮૷͢ΔνϡʔτϦΞϧ͕͋ͬͨ 

Slide 20

Slide 20 text

ͦΕΒ͍͠σβΠϯͷύεʹ 

Slide 21

Slide 21 text

forteeʹҠ২ͯ͠ΈΔ • ࢥ͍ͬͯͨΑΓ͢ΜͳΓҠ২Ͱ͖ɺຊ֨తͳ࣮૷΁ 

Slide 22

Slide 22 text

໨࣍ • લఏ • ࣮૷͢Δ͜ͱʹͳͬͨܦҢ • Google΢ΥϨοτ΁ͷอଘํ๏ • Apple΢ΥϨοτ΁ͷอଘํ๏ • ·ͱΊ

Slide 23

Slide 23 text

ύε͕อଘ͞ΕΔ·ͰͷྲྀΕ 1. ࡞Γ͍ͨύεʹԠͨ͡৘ใΛొ࿥͢Δ • ΠϕϯτຖʹύεΫϥεΛొ࿥ • ࢀՃऀຖʹύεΦϒδΣΫτΛొ࿥ 2. ύεอଘ༻ͷURLΛൃߦ͢Δ • URLʹΞΫηεͨ͠ΞΧ΢ϯτͷ୺຤ʹύε͕อଘ͞ΕΔ 

Slide 24

Slide 24 text

ύεΫϥεͱύεΦϒδΣΫτ • ύεΫϥε • ςϯϓϨʔτͷΑ͏ͳ΋ͷ • ࢀՃऀڞ௨ͷ৘ใΛอ࣋ • ύεΦϒδΣΫτ • ࢀՃऀݻ༗ͷ৘ใΛอ࣋ 

Slide 25

Slide 25 text

ύεΫϥε (Πϝʔδ)  JTTVFS/BNF MPHP FWFOU/BNF DBSE3PX5FNQMBUF*OGPT PCKFDUUFYU.PEVMFT%BUB<OBNF> PCKFDUUJDLFU/VNCFS IFSP*NBHF ύεΦϒδΣΫτ ΁ͷࢀর

Slide 26

Slide 26 text

ύεΦϒδΣΫτ (Πϝʔδ) 

Slide 27

Slide 27 text

࣮૷ • ࣄલ४උʢޙड़ʣͰઃఆͨ͠৘ใΛݩʹೝূ • ύεΫϥεɾύεΦϒδΣΫτͷొ࿥ • ύεอଘ༻URLͷൃߦ • อଘ͢Δύε৘ใΛJWTͰ෇༩ • ʮ΢ΥϨοτʹ௥ՃϘλϯʯΛઃஔ 

Slide 28

Slide 28 text

ࣄલ४උ 1. Google Wallet API ൃߦऀΞΧ΢ϯτొ࿥ 2. Google Cloudͷ೚ҙͷϓϩδΣΫτͰGoogle Wallet APIΛ༗ޮԽ 3. 2൪ͷϓϩδΣΫτͰαʔϏεΞΧ΢ϯτʢΞϓϦέʔγϣϯ༻ͷ ΞΧ΢ϯτʣΛ࡞੒ 4. Google Pay and Wallet ConsoleͰ3൪ͷΞΧ΢ϯτΛঝೝ  https://developers.google.com/wallet/tickets/events/getting-started/onboarding-guide

Slide 29

Slide 29 text

ύεΫϥεͷొ࿥ 1. ύεΫϥεͷ৘ใΛ૊Έཱͯ 2. ύεొ࿥༻Web APIʹPOST 

Slide 30

Slide 30 text

ύεΫϥεͷ৘ใΛ૊Έཱͯ (શମ) • ύεΫϥεͷૹ৴ܗࣜ • Web APIʹ௚઀POST͢Δ৔߹͸ JSON • SDKܦ༝ͷ৔߹͸JSONΛϥοϓ ͨ͠Ϋϥε 

Slide 31

Slide 31 text

ύεΫϥεͷ৘ใΛ૊Έཱͯ (1/3) • ΫϥεID: Πϕϯτʢຊฤɺ࠙਌ ձͳͲʣຖʹҰҙͳ஋ • reviewStatusʹACCEPTED͸ࢦ ఆͰ͖ͳ͍ɻొ࿥ޙɺࣗಈͰ ACCEPTEDʹมߋ͞ΕΔɻ 

Slide 32

Slide 32 text

ύεΫϥεͷ৘ใΛ૊Έཱͯ (2/3) • ࣗ༝ʹ࢖͑ΔදࣔྖҬʹࢀՃऀ໊ɾνέοτ൪ ߸΁ͷࢀরΛࢦఆ • ࢀরઌtextModulesDataͷࢦఆํ๏͸Πϯσο Ϋεࢦఆɾidࢦఆ͕࢖͑Δ • ⚠ idࢦఆͷ৔߹ɺγϯάϧΫΦʔτͰғͬ ͨ৔߹͔͠ಈ͔ͳ͔ͬͨͷͰ஫ҙ • (PHP༻SDKݶఆͷՄೳੑ΋ແ͘͸ͳ͍) 

Slide 33

Slide 33 text

ύεΫϥεͷ৘ใΛ૊Έཱͯ (3/3) • ը૾͸URLͰࢦఆ͢ΔͷͰɺ Πϯλʔωοτ্ʹެ։͞Ε ͍ͯͳ͚Ε͹͍͚ͳ͍ • ϩʔΧϧ؀ڥͰࢦఆ͢Δ ը૾΋ • ʢ෬ઢʣ 

Slide 34

Slide 34 text

ύεΦϒδΣΫτͷొ࿥ • ΦϒδΣΫτID: ࢀՃऀຖʹҰҙ ͳ஋ 

Slide 35

Slide 35 text

ύεอଘ༻URLͷൃߦ • "https://pay.google.com/gp/v/save/{JWT}" ʹΞΫηε͢Δͱ ύε͕อଘ͞ΕΔ • JWTͷத਎ • ύεΫϥεɺύεΦϒδΣΫτɺ΢ΥϨοτൃߦ༻ΞΧ ΢ϯτͷൿີ伴Ͱ࡞੒ͨ͠ॺ໊ 

Slide 36

Slide 36 text

ʮGoogle΢ΥϨοτʹ௥ՃʯϘλϯ • ϒϥϯυΨΠυϥΠϯʹԊͬͯઃஔ • ͜ͷϖʔδ͔Βը૾Λμ΢ϯϩʔυՄೳ • ϩʔΧϥΠζ͞ΕͨϘλϯͷ࢖༻΍αΠ ζɺपลͱͷִؒͳͲ • 🚫 ಠࣗϘλϯͷ࡞੒  https://developers.google.com/wallet/tickets/events/resources/brand-guidelines

Slide 37

Slide 37 text

৹ࠪ • ࣄۀऀ৘ใొ࿥ޙɺύεͷ࢖༻༻్ͳͲεΫγϣΛఴ͑ͯϝʔ ϧͰఏग़  https://developers.google.com/wallet/tickets/events/test-and-go-live/ request-publishing-access

Slide 38

Slide 38 text

৹ࠪͰࢦఠ͞Εͨ಺༰ 

Slide 39

Slide 39 text

🚫 ൚༻ύεΛ࢖͏ • ൚༻ύεΛʮԿʹͰ΋࢖͑Δύεʯͩͱצҧ͍͍ͯͨ͠ • ΠϕϯτνέοτύεΛ࢖Θͳ͚Ε͹͍͚ͳ͍ͱࢦఠ͋Γ • ໌ࣔతʹࢦఠͯ͘͠Εͨͱ΋ݴ͑Δ 

Slide 40

Slide 40 text

🚫 "Add to Google Wallet"Ϙλϯ • ೔ຊޠԽ͞ΕͨϘλϯΛ࢖͍ͬͯͳ͔ͬͨ • "It appears the button being used in your screenshot is incorrect and we ask that you correct this to re fl ect our Brand Guidelines." • Կ͕Ͳ͏incorrectͳͷ͔ͷهࡌ͸ແ͘ɺϩʔΧϥΠζରԠ͕ ࢦఠՕॴ͔΋͠Εͳ͍ͱमਖ਼ͨ͠Β৹ࠪΛ௨ͬͨ 

Slide 41

Slide 41 text

ຊ൪Ͱಈ͔ͨ͠ΒΤϥʔ • 400Τϥʔ • Request contains an invalid argument • ͜Ε͚ͩ 

Slide 42

Slide 42 text

ຊ൪Ͱಈ͔ͨ͠ΒΤϥʔ • 400Τϥʔ • Request contains an invalid argument • ͜Ε͚ͩ • → ύεʹࠩ͠ࠐΉը૾ͷURL૊Έཱͯॲཧ͕ؒҧ͍ͬͯͨ • ϩʔΧϧ؀ڥͰ͸ը૾Λݻఆ͍ͯͨ͠ͷͰؾ͚ͮͣʢ෬ઢճऩʣ 

Slide 43

Slide 43 text

׬੒ 

Slide 44

Slide 44 text

ಈ࡞֬ೝ • AndroidεϚʔτϑΥϯ • ϒϥ΢β • ؆қతͳӾཡ͸Մೳ 

Slide 45

Slide 45 text

σόοά • Կ͔͠Βؒҧ͍ͬͯͨ৔߹͸Web API͔ΒΤϥʔ͕ฦͬͯ͘Δ • ϨεϙϯεϘσΟʹΤϥʔϝοηʔδ͕هࡌ͞ΕΔ 

Slide 46

Slide 46 text

ύεͷߋ৽ • PUT / PATCH APIΛୟ͚ͩ͘Ͱ؆୯ʹߋ৽Մೳ • ύεΦϒδΣΫτͷ࡟আ͸ແ͍ • Ωϟϯηϧ࣌ͳͲ • stateΛINACTIVEʹมߋ͢Ε͹ແޮԽ͞ΕΔ 

Slide 47

Slide 47 text

Google΢ΥϨοτ·ͱΊ • ύεͷ৘ใ͸ࢀՃऀڞ௨ͷύεΫϥεͱࢀՃऀݻ༗ͷύεΦϒ δΣΫτʹ෼͚ͯొ࿥͢Δ • ύεͷొ࿥ɾߋ৽ͱ΋ʹWeb APIܦ༝ͰՄೳ • අ༻͸ֻ͔Βͳ͍͕ॳظಋೖ࣌ʹ৹͕ࠪ͋Δ 

Slide 48

Slide 48 text

໨࣍ • લఏ • ࣮૷͢Δ͜ͱʹͳͬͨܦҢ • Google΢ΥϨοτ΁ͷอଘํ๏ • Apple΢ΥϨοτ΁ͷอଘํ๏ • ·ͱΊ

Slide 49

Slide 49 text

ύε͕อଘ͞ΕΔ·ͰͷྲྀΕ 1. ࡞Γ͍ͨύεͷ৘ใΛຒΊࠐΜͩpkpassϑΝΠϧΛࢀՃऀຖʹੜ੒͢Δ 2. pkpassϑΝΠϧΛiPhoneʹૹΔ • ϑΝΠϧμ΢ϯϩʔυɺϝʔϧఴ෇ͳͲ • pkpassϑΝΠϧΛड͚औΔͱ΢ΥϨοτʹอଘ͞ΕΔ  https://developer.apple.com/documentation/walletpasses/creating-the-source-for-a-pass https://developer.apple.com/documentation/walletpasses/building-a-pass

Slide 50

Slide 50 text

pkpassϑΝΠϧ • ࣮ଶ͸zipϑΝΠϧ • ύε৘ใ • ύεʹදࣔ͢Δը૾ • վ͟Μݕ஌ͷͨΊͷϋογϡ • ॺ໊ 

Slide 51

Slide 51 text

ύε৘ใ (pass.json) • ύεʹදࣔ͞ΕΔ৘ใ΍ཪ ଆͰOSʹ఻͑ΔͨΊͷϝλ σʔλΛ֨ೲ 

Slide 52

Slide 52 text

ϋογϡ (manifest.json) • zip಺ʹ͋Δ֤ϑΝΠϧͷSHA-1 ϋογϡΛ֨ೲɻϑΝΠϧ͕վ͟ Μ͞Εͯϋογϡ͕Ұக͠ͳ͍ͱ ҎԼͷΑ͏ͳΤϥʔ͕ग़Δɻ • "Invalid data error reading pass XXX. For fi le pass.json, manifest's listed SHA1 hash YYY doesn't match computed hash, ZZZ" 

Slide 53

Slide 53 text

ॺ໊ (signature) • manifest.jsonΛPKCS #7 ෼཭ܗࣜͰॺ໊ͨ͠ϑΝΠϧ • Apple Developerʹొ࿥͞ΕͨΞΧ΢ϯτʹΑͬͯ࡞੒͞Εͨ ύεͰ͋ΔࣄΛূ໌ 

Slide 54

Slide 54 text

࣮૷ 1. Apple Developer͔Βূ໌ॻΛ࡞੒ 2. pass.jsonΛ࡞੒ 3. ඞཁͳը૾Λ഑ஔ 4. pass.jsonɾը૾ͷSHA-1ϋογϡΛܭࢉ͠manifest.jsonΛ࡞੒ 5. manifest.jsonʹॺ໊ 6. zipѹॖ͠ɺ֦ுࢠΛpkpassʹมߋ 7. ʮApple΢ΥϨοτʹอଘʯϘλϯΛઃஔ 

Slide 55

Slide 55 text

ূ໌ॻͷ࡞੒ 1. CSR (Certi fi cate Signing Requestɻূ໌ॻॺ໊ཁٻ)Λ࡞੒ • ॺ໊࣌ʹൿີ伴͕ඞཁʹͳΔͷͰɺCSRੜ੒࣌ʹൿີ伴΋࡞੒͓ͯ͘͠ • ྫ) openssl req -new -key cert.key -out cert.csr -sha256 2. Apple Developer্ 1. Pass Type Identi fi erΛ࡞੒ 2. CSRΛΞοϓϩʔυ͠ɺূ໌ॻΛ࡞੒  https://developer.apple.com/documentation/walletpasses/building-a-pass

Slide 56

Slide 56 text

pass.jsonΛ࡞੒ • Πϕϯτ৘ใɾࢀՃऀ৘ ใɾূ໌ॻʹඥͮ͘։ൃऀ ৘ใͷશͯΛຒΊࠐΈ • ΠϕϯτνέοτͰ͋Δͱ ΢ΥϨοτʹ఻͑Δʹ͸ "eventTicket"ͷઃఆ͕ඞཁ 

Slide 57

Slide 57 text

ඞཁͳը૾ͷ഑ஔ • icon: ͲͷछྨͷύεͰ΋ඞਢ • "Customize the look of your pass by using images for a logo and other items. All passes require an icon" • ϝʔϧʹఴ෇͞Εͨ৔߹ͷը૾දࣔ΍ɺ௨஌Ͱ࢖༻͞ΕΔ • ͦͷଞͷը૾: ύεͷछྨ΍ϨΠΞ΢τʹԠͯ͡ඞਢ • ΠϕϯτύεͷϨΠΞ΢τ͸2छྨ 

Slide 58

Slide 58 text

ΠϕϯτύεͷϨΠΞ΢τ (Layout 1) 

Slide 59

Slide 59 text

ΠϕϯτύεͷϨΠΞ΢τ (Layout 2) 

Slide 60

Slide 60 text

ΠϕϯτύεͰඞཁͳը૾ϑΝΠϧ • icon • Layout 1ͷ৔߹ • background or thumbnail • Layout 2ͷ৔߹ ←ͪ͜ΒΛ࢖༻ • strip (ԣ௕ͷը૾) 

Slide 61

Slide 61 text

Layout͸Ͳ͏΍ܾͬͯ·Δʁ "An event ticket can display logo, strip, background, or thumbnail images. However, if you supply a strip image, don’t include a background or thumbnail image." 🤔  https://developer.apple.com/design/human-interface-guidelines/wallet

Slide 62

Slide 62 text

Layout͸Ͳ͏΍ܾͬͯ·Δʁ "An event ticket can display logo, strip, background, or thumbnail images. However, if you supply a strip image, don’t include a background or thumbnail image." ҙ༁) background image͔thumbnail image͕͋Ε͹Layout 1 ʹɺstrip image͕͋Ε͹Layout 2ʹͳΓ·͢ɻ  https://developer.apple.com/design/human-interface-guidelines/wallet

Slide 63

Slide 63 text

manifest.jsonʹॺ໊ • ྫ) openssl smime -sign -in manifest.json -inkey ൿີ伴ͷύε -signer ূ໌ॻͷύε -cert fi le தؒূ໌ ॻͷύε -out signature -outform DER • ॺ໊ʹඞཁͳϑΝΠϧ • Apple Developer͔Βൃߦͨ͠ূ໌ॻ • ূ໌ॻʹඥͮ͘ൿີ伴 • WWDRதؒূ໌ॻ https://developer.apple.com/jp/help/account/reference/wwdr-intermediate-certi fi cates/ ͷG4 

Slide 64

Slide 64 text

zipѹॖ͠ɺ֦ுࢠΛpkpassʹมߋ • ⚠ .DS_StoreͳͲɺෆཁͳɾmanifest.jsonʹهࡌ͞Ε͍ͯͳ͍ ϑΝΠϧ͸zipʹؚΊͳ͍ • ଘࡏ͢ΔͱύεӾཡ࣌ʹΤϥʔ͕ൃੜ͢Δ 

Slide 65

Slide 65 text

ʮApple΢ΥϨοτʹ௥ՃʯϘλϯ • ΨΠυϥΠϯʹԊͬͯઃஔ • ͜ͷϖʔδ͔Βը૾Λμ΢ϯϩʔυՄೳ • ϩʔΧϥΠζ͞ΕͨϘλϯͷ࢖༻΍αΠ ζɺपลͱͷִؒͳͲ • 🚫 ಠࣗϘλϯͷ࡞੒  https://developer.apple.com/wallet/add-to-apple-wallet-guidelines/

Slide 66

Slide 66 text

׬੒ 

Slide 67

Slide 67 text

ಈ࡞֬ೝ • iPhone (࣮ػɺγϛϡϨʔλ) • Mac • pkpassϑΝΠϧͷ؆қతͳӾཡ͸Մೳ 

Slide 68

Slide 68 text

σόοά • ύεͷܗ͕ࣜؒҧ͍ͬͯͯ΋ը໘্ʹ͸Կ΋Τϥʔ͕දࣔ͞Εͳ͍ • Mac্ͩͱConsole.appͰϩάΛ֬ೝ͠ͳ͍ͱΤϥʔ͕෼͔Βͳ͍ • ϩά͕ग़ྗ͞ΕΔϓϩηε • MacͰ௚઀ύεΛ։͍͍ͯΔ৔߹: Pass Viewer • γϛϡϨʔλ্ͷiPhoneͰύεΛ։͍͍ͯΔ৔߹: PassBook 

Slide 69

Slide 69 text

σόοά 

Slide 70

Slide 70 text

ύεͷߋ৽ (forteeະରԠ) • Push௨஌Λ࢖ͬͯύεͷߋ৽΋Մೳ • Google΢ΥϨοτʹൺ΂Δͱϑϩʔ͕ෳࡶ 

Slide 71

Slide 71 text

ߋ৽ϑϩʔ  https://developer.apple.com/documentation/walletpasses/adding-a-web-service-to-update-passes

Slide 72

Slide 72 text

ߋ৽ϑϩʔ  https://developer.apple.com/documentation/walletpasses/adding-a-web-service-to-update-passes ᶃύεΛอଘ ᶄ୺຤৘ใΛαʔόʔʹొ࿥

Slide 73

Slide 73 text

ߋ৽ϑϩʔ  https://developer.apple.com/documentation/walletpasses/adding-a-web-service-to-update-passes ᶃύεΛอଘ ᶄ୺຤৘ใΛαʔόʔʹొ࿥ ᶅPush௨஌Λૹ৴ ᶆߋ৽ՄೳͳύεͷҰཡΛ໰͍߹Θͤ

Slide 74

Slide 74 text

ߋ৽ϑϩʔ  https://developer.apple.com/documentation/walletpasses/adding-a-web-service-to-update-passes ᶃύεΛอଘ ᶄ୺຤৘ใΛαʔόʔʹొ࿥ ᶅPush௨஌Λૹ৴ ᶆߋ৽ՄೳͳύεͷҰཡΛ໰͍߹Θͤ ᶇߋ৽͢ΔύεΛཁٻ ᶈpkpassϑΝΠϧ

Slide 75

Slide 75 text

Apple΢ΥϨοτ·ͱΊ • ύεͷ৘ใ͸ࢀՃऀຖʹશ৘ใΛຒΊࠐΉ • ύε௥Ճ࣌͸pkpassϑΝΠϧΛੜ੒͢Δ͚ͩ • ߋ৽࣌͸Web API΍Push௨஌Λ࢖ͬͨϑϩʔΛ౿Ή • ༗ྉͷApple Developer Program΁ͷొ࿥͕ඞཁ • ٯʹݴ͑͹ͦΕ͚ͩɻύε࡞੒࣌ʹ৹ࠪ͸ແ͍ 

Slide 76

Slide 76 text

ϝλσʔλͷ׆༻ (forteeະରԠ) • ύεͷϝλσʔλΛద੾ʹઃఆ͢Δͱ΢ΥϨοτ͕ΑΓศརʹ • Πϕϯτ։࠵ؒࡍͷ௨஌ • ΠϕϯτऴྃޙʹύεΛظݶ੾Εʹ • ։࢝࣌ؒɾձ৔ͷ྆ํʹ͍ۙͮͨΒiPhoneͷϩοΫը໘ʹύεΛදࣔ • etc  https://developer.apple.com/documentation/walletpasses/supporting-semantic-tags-in-wallet-passes https://developer.apple.com/documentation/walletpasses/showing-a-pass-on-the-lock-screen https://developers.google.com/wallet/tickets/events/use-cases/upcoming-noti fi cation

Slide 77

Slide 77 text

໨࣍ • લఏ • ࣮૷͢Δ͜ͱʹͳͬͨܦҢ • Google΢ΥϨοτ΁ͷอଘํ๏ • Apple΢ΥϨοτ΁ͷอଘํ๏ • ·ͱΊ

Slide 78

Slide 78 text

ൺֱ  "QQMF΢ΥϨοτ (PPHMF΢ΥϨοτ ɾෳ਺ɻʮͦͷଞʯ͋Γ ύεͷछผ ɾෳ਺ɻʮͦͷଞʯ͋Γ ࢀՃऀຖʹಠཱ ύεͷ৘ใ ࢀՃऀڞ௨߲໨͋Γ QLQBTTϑΝΠϧΛ࡞੒ ύεͷ৽نొ࿥ 1045"1* ෳࡶ ύεͷߋ৽ 1651"5$)"1*Λୟ͚ͩ͘ ύε಺ʹ௚઀֨ೲ ϩʔΧϧͰ։ൃ͠΍͍͢ ը૾ 63-ࢦఆ ʢϩʔΧϧͰ։ൃ͠ʹ͍͘ʣ ༗ྉ˞ අ༻ ແྉ ͳ͠ ৹ࠪ ॳظಋೖ࣌͋Γ ※1: Apple Developer Programʹطʹೖ͍ͬͯΕ͹࣮࣭ແྉ ಉ͡ ҧ͍༗ ҧ͍େ

Slide 79

Slide 79 text

·ͱΊ • Apple΢ΥϨοτɾGoogle΢ΥϨοτʹύεΛอଘ͢ΔͱQRίʔυͷఏࣔʹ࢝· Γɺ༷ʑͳ఺ͰศརʹͳΔ • Apple΢ΥϨοτɺGoogle΢ΥϨοτʹύεΛอଘ͢Δͷ͸ҙ֎ͱ೉͘͠ͳ͍ʢಛ ʹ৽نొ࿥ʣ • 2ͭͷ΢ΥϨοτ͸ύεͷछྨͷ෼ྨ΍ϝλσʔλͷ׆༻ͳͲɺࣅ͍ͯΔ఺΋͋Δͷ ͰԠ༻͕ޮ͘ • ยํΛ࣮૷ͨ͜͠ͱ͕͋ΔਓͳΒ΋͏ยํ΋࣮૷ͯ͠ΈΔͱ໘ന͍ͷͰΦεεϝ 

Slide 80

Slide 80 text

ྑ͖΢ΥϨοτϥΠϑΛ 

Slide 81

Slide 81 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 

Slide 82

Slide 82 text

ิ଍) εϚʔτ΢Υον΁ͷอଘํ๏ • Apple Watch • WebαΠτ͔ΒύεΛ௥Ճ͢Δ৔߹ɿiPhoneܦ༝ • ϝʔϧ΍ϝοηʔδ͔ΒύεΛ௥Ճ͢Δ৔߹ɿ௚઀ • Wear OS εϚʔτ΢Υον • AndroidεϚʔτϑΥϯܦ༝  https://support.apple.com/ja-jp/guide/watch/apd4362807a0/watchos https://support.google.com/googlepixelwatch/answer/14260807? hl=ja&ref_topic=12652267&sjid=11192229721491948574-AP

Slide 83

Slide 83 text

ิ଍) JWT • JSON Web TokensͷུɻRFC 7519Ͱఆٛ͞Εͨܗࣜ • ίϯύΫτͰURLηʔϑ • υοτͰ۠੾ΒΕͨϔομʔ / ϖΠϩʔυ / ॺ໊͔ΒͳΔจࣈྻ • ϖΠϩʔυ • JSONܗࣜͷύεΫϥεɾΦϒδΣΫτΛbase64Τϯίʔυ 

Slide 84

Slide 84 text

JWTੜ੒ͷ࣮૷ྫ (PHP) 

Slide 85

Slide 85 text

ิ଍) PKCS #7 • PKCS (Public Key Cryptography Standardsɺެ։伴҉߸ඪ४) ͷ7൪໨ • σʔλͷ҉߸Խ΍ॺ໊ʹ࢖ΘΕΔRFC 2315Ͱఆٛ͞Εͨܗࣜ • ॺ໊σʔλͷܗࣜʹ͸3ύλʔϯ͋Δ 

Slide 86

Slide 86 text

ิ଍) ॺ໊σʔλͷܗࣜ • ෼཭(Detached)ܗࣜ ← Apple΢ΥϨοτͰ࢖༻ • ॺ໊ର৅σʔλ͔Βಠཱͯ͠ॺ໊σʔλΛ࡞੒͢Δܗࣜ • ిࢠॺ໊͞ΕͨϝʔϧΛS/MIMEඇରԠͷϝʔϥʔͰ΋ಡΈऔΕΔΑ͏ʹ͢Δ໨తͳͲͰ࢖༻ • ಺แ(Enveloping)ܗࣜ • ॺ໊σʔλͷதʹॺ໊ର৅σʔλΛ֨ೲ͢Δܗࣜ • แؚ(Enveloped)ܗࣜ • ॺ໊ର৅σʔλͷதʹॺ໊σʔλΛ֨ೲ͢Δܗࣜ 

Slide 87

Slide 87 text

༨ஊ) forteeಛ༗ͷࣄ৘ ᶃʙᶅ 

Slide 88

Slide 88 text

ᶃ forteeͰͷ࣮૷ํ਑ • ඞਢ • ड෇༻QRίʔυ • νέοτ൪߸ (QRίʔυΛಡΊͳ͍ ࣌ͷর߹༻)  • ΍Βͳ͍ • ύεʹຒΊࠐΜͩΧϯϑΝϨϯεɾ Πϕϯτ৘ใͷߋ৽ • νέοτൢചΛ։࢝͢Δࠒʹ͸֬ ఆ͍ͯ͠Δ͸ͣ • ؤுͬͯ͸΍Βͳ͍ • ύεʹຒΊࠐΜͩνέοτࢀՃऀ৘ ใͷมߋͷߋ৽

Slide 89

Slide 89 text

ᶄ ࢀՃऀ໊ʹAttendeeͱग़Δ৔߹͕͋Δ • forteeͷ৔߹ɺνέοτͷ߲໨ ʹࢀՃऀ໊͕͋Δͱ͸ݶΒͳ͍ ͷͰɺແ͍৔߹͸Attendeeදه ʹ͍ͯ͠Δ • iOSDC JapanͳΒ࠙਌ձͳͲ 

Slide 90

Slide 90 text

ᶅ Apple΢ΥϨοτͰLayout 2Λબ୒ • ΧϯϑΝϨϯε΍ΠϕϯτʹΑͬͯ͸ࢀՃऀ৘ใʹΞΠίϯ Λอ͍࣋ͯ͠ͳ͍ͨΊ  ❌

Slide 91

Slide 91 text

ࢀߟهࣄ • https://developer.apple.com/jp/wallet/ • https://developer.apple.com/documentation/walletpasses • https://developer.apple.com/wallet/add-to-apple-wallet-guidelines/ • https://developer.apple.com/design/human-interface-guidelines/wallet • https://developer.apple.com/documentation/walletpasses/supporting- semantic-tags-in-wallet-passes 

Slide 92

Slide 92 text

ࢀߟهࣄ • https://developers.google.com/wallet • https://developers.google.com/wallet/tickets/events • https://developers.google.com/wallet/tickets/events/resources/brand- guidelines • https://developers.google.com/wallet/tickets/events/use-cases/upcoming- noti fi cation • https://github.com/google-wallet/rest-samples