Upgrade to Pro — share decks privately, control downloads, hide ads and more …

施策基盤としてのディープリンク〜なめらかにアプリが開く体験のために〜

Atsuya Sato
September 10, 2022

 施策基盤としてのディープリンク〜なめらかにアプリが開く体験のために〜

2022/09/10(土)~12(月)に開催されたiOSDC Japan 2022で発表した2022/09/10 16:40〜 Track B「施策基盤としてのディープリンク 〜なめらかにアプリが開く体験のために〜」の資料です

Atsuya Sato

September 10, 2022
Tweet

More Decks by Atsuya Sato

Other Decks in Technology

Transcript

  1. $PPLQBE*OD ©︎ σΟʔϓϦϯΫ %FFQ-JOLJOH ͱ͸ ˔ σΟʔϓϦϯΫͱ͍͏lػೳz͸ͳ͍ ˓ ֓೦͓Αͼ໊শͱͯ͠lσΟʔϓϦϯΫzͱ͍͏ϫʔυ͕༻͍ΒΕ͍ͯΔ 

    ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ σΟʔϓϦϯΫʹରԠͨ͠URIͦͷ΋ͷΛࢦ͢ݴ༿ͱͯ͠΋ ར༻͞ΕΔ ֓೦ ໊শ ΞϓϦͷಛఆͷίϯςϯπΛ URI Ͱදݱͯ͠ɺର৅ͷURIΛ ϦΫΤετͨ͠ࡍʹΞϓϦͷಛఆͷίϯςϯπʹΞΫηε͢ ΔͨΊͷ΋ͷ ˔ ྫ ΫοΫύουͷϨγϐৄࡉΛ։͘σΟʔϓϦϯΫ ˓ IUUQTDPPLQBEDPNSFDJQFJE ˓ DPPLQBEEPNBJOSFDJQFJE ˞આ໌༻ʹ࣮ࡍͱ͸ผͷ΋ͷΛࡌ͍ͤͯ·͢
  2. $PPLQBE*OD ©︎ σΟʔϓϦϯΫ %FFQ-JOLJOH ͱ͸ ˔ ΞϓϦͷಛఆͷը໘Λ63*Ͱදݱͯ͠ɺ౿Ήͱͦ͜ʹભҠͤ͞Δ͜ͱɻ·ͨ ͸ͦͷ63*ͦͷ΋ͷɻ ˔ ϢχόʔαϧϦϯΫͰ༻͍ΒΕΔ63-΍ΧελϜεΩʔϜͷ63*ͳͲࣗ਎ͷ͜

    ͱΛσΟʔϓϦϯΫͱݺͿ͜ͱ΋͋Δ ˔ ʮϢχόʔαϧϦϯΫʯ΍ʮΧελϜ63-εΩʔϜʯ͸σΟʔϓϦϯΫΛ࣮ ݱ͢ΔͨΊͷํ๏ͷҰछ  ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ ˔ ิ଍ݫີʹ͸8PSME8JEF8FCʹ͓͚ΔσΟʔϓϦϯΫ %FFQ-JOLJOH ͱϞόΠϧΞϓϦͷ จ຺ʹ͓͚ΔσΟʔϓϦϯΫ .PCJMF%FFQ-JOLJOH ͸۠ผ͞ΕΔ ˓ ؆୯ͷͨΊ.PCJMF%FFQ-JOLJOHͷ͜ͱΛσΟʔϓϦϯΫͱݺͿ͜ͱʹ͢Δ
  3. $PPLQBE*OD ©︎ σΟʔϓϦϯΫʹରԠͨ͠URIͦͷ΋ͷΛࢦ͢ݴ༿ͱͯ͠΋ར༻͞ΕΔ ֓೦ ໊শ ΞϓϦͷಛఆͷίϯςϯπΛ URI Ͱදݱͯ͠ɺର৅ͷURIΛϦΫΤετͨ͠ࡍʹ ΞϓϦͷಛఆͷίϯςϯπʹΞΫηε͢ΔͨΊͷ΋ͷ σΟʔϓϦϯΫ

    (Deep Linking) http(s): Ͱ࢝·ΔϦϯΫΛϋϯυϦϯά͢Δ http(s): Ҏ֎ͷϦϯΫΛϋϯυϦϯά͢Δ ػೳ Universal Links Android App Links ػೳ ػೳ Custom URL Scheme 
  4. $PPLQBE*OD ©︎ 6OJWFSTBM-JOLTͱ͸  ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ ػೳ ಛఆͷ΢ΣϒαΠτʹؔ࿈෇͚ΒΕͨΞϓϦ͕Πϯε τʔϧ͞Ε͍ͯΔ৔߹ɺ΢ΣϒαΠτURL͔Β௚઀
 ΞϓϦ಺ͷରԠίϯςϯπΛ։͚ΔΑ͏ʹͳΔ΋ͷ ˔

    "TTPDJBUFE%PNBJOTͰઃఆ͞ΕͨυϝΠϯͷBQQMFBQQ TJUFBTTPDJBUJPOϑΝΠϧΛΞϓϦͷॳճىಈ࣌ʹμ΢ϯϩ ʔυͯ͠൑ผͰ͖ΔΑ͏ʹ͍ͯ͠Δ ˔ J04ͷΈͰར༻Մೳͳػೳ 
 ˞"OESPJEͰ͸ྨࣅٕज़ͱͯ͠"OESPJE"QQ-JOLT͕ར༻Մೳ
  5. $PPLQBE*OD ©︎ ΧελϜ63-εΩʔϜ $VTUPN63-4DIFNF ͱ͸  ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ ػೳ ΞϓϦ͝ͱʹఆٛ͞Ε͍ͯΔ https:,

    http: Ҏ֎ͷಠࣗͷ εΩʔϜΛࣝผͯ͠ɺରԠ͢ΔΞϓϦΛ։͘͜ͱͷͰ ͖Δػೳ (iOS/AndroidͰར༻Մೳ) ˞ิ଍ຊདྷΧελϜ63-εΩʔϜ͕ࢦ͢΋ͷ͸DPPLQBEEPNBJO ͷ෦෼͕ͩɺ׳༻తʹDPPLQBEEPNBJOSFDJQFJEͷΑ͏ͳσΟʔ ϓϦϯΫʹରԠͨ͠63*ࣗ਎Λࢦ͢ݴ༿ͱͯ͠࢖ΘΕΔ৔߹΋͋Δ
  6. $PPLQBE*OD ©︎ ΧελϜ63-εΩʔϜ $VTUPN63-4DIFNF ͱ͸  ֓೦ͱͯ͠ͷσΟʔϓϦϯΫ ػೳ ΞϓϦ͝ͱʹఆٛ͞Ε͍ͯΔ https:,

    http: Ҏ֎ͷಠࣗͷ εΩʔϜΛࣝผͯ͠ɺରԠ͢ΔΞϓϦΛ։͘͜ͱͷͰ ͖Δػೳ (iOS/AndroidͰར༻Մೳ) ˔ ΞϓϦଆͰ*EFOUJ fi FS͓Αͼ63-4DIFNFTΛఆٛ͢Δ͜ͱ Ͱར༻Ͱ͖Δ ొஃ࣌͸εϥΠυεΩοϓ͠·͢
  7. $PPLQBE*OD ©︎  σΟʔϓϦϯΫʹରԠͨ͠URIͦͷ΋ͷΛࢦ͢ݴ༿ͱͯ͠΋ར༻͞ΕΔ ֓೦ ໊শ ΞϓϦͷಛఆͷίϯςϯπΛ URI Ͱදݱͯ͠ɺର৅ͷURIΛϦΫΤετͨ͠ࡍʹ ΞϓϦͷಛఆͷίϯςϯπʹΞΫηε͢ΔͨΊͷ΋ͷ

    σΟʔϓϦϯΫ (Deep Linking) http(s): Ͱ࢝·ΔϦϯΫΛϋϯυϦϯά͢Δ http(s): Ҏ֎ͷϦϯΫΛϋϯυϦϯά͢Δ ػೳ Universal Links Android App Links ػೳ ػೳ Custom URL Scheme
  8. $PPLQBE*OD ©︎ σΟϑΝʔυσΟʔϓϦϯΫ %FGFSSFE%FFQ-JOLJOH  Πϯετʔϧ͞Εͯͳ͍ΞϓϦΛର৅ͱͨ͠σΟʔϓϦϯΫ ˔ Ϣʔβʔ͕ΞϓϦΛΠϯετʔϧ͍ͯ͠ͳ͍৔߹ɺΞϓϦ ετΞΛ։͘ ˓

    ΞϓϦ͕Πϯετʔϧ͞ΕͨޙॳΊͯىಈ͞Εͨ࣌ ʹɺσΟʔϓϦϯΫʹΑΔભҠॲཧ͕࣮ߦ͞ΕΔ ֓೦ σΟʔϓϦϯΫͷ࣮ߦΛΞϓϦΠϯετʔϧ׬ྃ ޙͷॳճىಈ࣌·ͰʮDeferred(Ԇظ)ʯͤ͞ΔͨΊ ͷ΋ͷ
  9. $PPLQBE*OD ©︎ σΟϑΝʔυσΟʔϓϦϯΫ %FGFSSFE%FFQ-JOLJOH  Πϯετʔϧ͞Εͯͳ͍ΞϓϦΛର৅ͱͨ͠σΟʔϓϦϯΫ ˔ σΟϑΝʔυσΟʔϓϦϯΫΛαϙʔτ͢ΔͨΊͷํ๏͸ ϓϥοτϑΥʔϜʹΑͬͯҟͳΔ ެࣜαϙʔτ͸༻ҙ͞Ε͍ͯͳ͍ɻ


    ΫϦοϓϘʔυʹσΟʔϓϦϯΫͷύϥϝʔλʔΛอ࣋ͯ͠ɺ ΞϓϦىಈ࣌ʹΫϦοϓϘʔυ͔ΒσΟʔϓϦϯΫΛಡΈग़͠ ͯॲཧͤ͞ΔͳͲͷํ๏Ͱ࣮ݱͰ͖Δ ػೳ ެࣜػೳͱͯ͠ɺΠϯςϯτΛ࢖༻ͯ͠Google PlayετΞΛհ ͯ͠σΟʔϓϦϯΫΛ౉͢Φϓγϣϯ͕ఏڙ͞Ε͍ͯΔ ࢓૊Έ
  10. $PPLQBE*OD ©︎  σΟϑΝʔυσΟʔϓϦϯΫ (Deferred Deep Linking) ެࣜػೳͰ࣮ݱՄೳ σΟʔϓϦϯΫʹରԠͨ͠URIͦͷ΋ͷΛࢦ͢ݴ༿ͱͯ͠΋ར༻͞ΕΔ ֓೦

    ໊শ ΞϓϦͷಛఆͷίϯςϯπΛ URI Ͱදݱͯ͠ɺର৅ͷURIΛϦΫΤετͨ͠ ࡍʹΞϓϦͷಛఆͷίϯςϯπʹΞΫηε͢ΔͨΊͷ΋ͷ σΟʔϓϦϯΫ (Deep Linking) http(s): Ͱ࢝·ΔϦϯΫΛϋϯυϦϯά͢Δ http(s): Ҏ֎ͷϦϯΫΛϋϯυϦϯά͢Δ ػೳ Universal Links Android App Links ػೳ ػೳ Custom URL Scheme ΞϓϦະΠϯετʔϧͷ୺຤Λର৅ʹɺΞϓϦετΞͷμ΢ϯϩʔυϖʔδΛ։͖ɺΞϓϦ͕ Πϯετʔϧ͞ΕͨޙॳΊͯىಈ͞Εͨ࣌ʹɺݩʑͷURIͰࢦఆ͞ΕͨίϯςϯπʹΞΫηεͤ͞Δ͜ͱ ֓೦ ػೳ ࢓૊Έ ΫϦοϓϘʔυͳͲΛ׆༻࣮ͯ͠ݱՄೳ σΟϑΝʔυσΟʔϓϦϯΫ΋ؚΊͯσΟʔϓϦϯΫͱݺͿ৔߹΋͋Δ
  11. $PPLQBE*OD ©︎ 'JSFCBTF%ZOBNJD-JOLT  σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε঺հ ˔ 'JSFCBTFͷػೳͷ͏ͪͷҰͭ ˓ ΞϓϦͷΠϯετʔϧঢ়ଶʹ໰Θͣෳ਺ϓϥοτϑΥʔϜͰར༻Մೳͳ 


    ϦϯΫΛੜ੒ͯ͘͠ΕΔ ˔ ΧελϜͷ%ZOBNJD-JOLTυϝΠϯΛऔಘͰ͖Δ ˓ ྫ EPNBJOQBHFMJOL ˔ 'JSFCBTFίϯιʔϧ͔Βͷ੩తͳ୹ॖ63-ੜ੒΍ύϥϝʔλ෇༩ʹΑΔ 
 ಈత63-ੜ੒͕Մೳ 'JSFCBTF%ZOBNJD-JOLTͱ͸ ˞'JSFCBTF%ZOBNJD-JOLTͰ࡞੒͞ΕͨϦϯΫͷ͜ͱΛμΠφϛοΫϦϯΫ %ZOBNJD-JOL ͱݺͿ
  12. $PPLQBE*OD ©︎ σΟʔϓϦϯΫΛखܰʹѻ͑ΔαʔϏε  σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε঺հ ˔ ΞϓϦ͕ະΠϯετʔϧͷϢʔβʔ ˓ σΟϑΝʔυσΟʔϓϦϯΫΛ༻͍ͯɺΞϓϦΠϯετʔϧΛଅͨ͠ޙɺ ॳճىಈ࣌ʹ໨తͷίϯςϯπ΁࿈Εͯ͘Δ͜ͱ͕Ͱ͖Δ

    ˔ ΞϓϦΠϯετʔϧࡁΈͷϢʔβʔ ˓ 6OJWFSTBM-JOLTΛ༻͍ͯɺΞϓϦͷ໨తͷίϯςϯπʹγʔϜϨεʹ࿈ Εͯ͘Δ͜ͱ͕Ͱ͖Δ ˔ ର৅ϓϥοτϑΥʔϜ֎ͷϢʔβʔ ˓ ϑΥʔϧόοΫઌͷ63-ʹϦμΠϨΫτͰ͖Δ 'JSFCBTF%ZOBNJD-JOLT΍"EKVTU
  13. $PPLQBE*OD ©︎ Πϯετʔϧঢ়گʹԠͨ͡ભҠ ˔ 'JSFCBTF%ZOBNJD-JOLTͷྫ ˓ 'JSFCBTF%ZOBNJD-JOLTͰൃߦ͞ΕͨɺμΠ φϛοΫϦϯΫ͸ʮϦϯΫΛϓϨϏϡʔ σό οά

    ʯ͔ΒڍಈΛ֬ೝͰ͖Δ ˙ ˞μΠφϛοΫϦϯΫͷ຤ඌʹEΦϓ γϣϯΛ෇͚ͯ΋֬ೝͰ͖Δ ˓ ϓϥοτϑΥʔϜ΍ΞϓϦͷΠϯετʔϧঢ়گ ʹ ˙ 8FCͰ63-Λ։͘ ˙ "QQ4UPSFΛ։͘ ˙ σΟʔϓϦϯΫͰΞϓϦΛ։͘  σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε঺հ ొஃ࣌͸εϥΠυεΩοϓ͠·͢
  14. $PPLQBE*OD ©︎  σΟϑΝʔυσΟʔϓϦϯΫ (Deferred Deep Linking) http(s): Ͱ࢝·ΔϦϯΫΛϋϯυϦϯά͢Δ http(s):

    Ҏ֎ͷϦϯΫΛϋϯυϦϯά͢Δ Universal Links Custom URL Scheme σΟʔϓϦϯΫ (Deep Linking) σΟʔϓϦϯΫ Λखܰʹར༻Ͱ͖ΔαʔϏε Firebase Dynamic Links ੡඼໊ Adjust ੡඼໊ ΞϓϦΠϯετʔϧ ࣌ʹ࣮ߦ ΞϓϦະΠϯετʔϧ࣌ ʹ࣮ߦ
  15. $PPLQBE*OD ©︎ ॳճઃఆঢ়گʹԠͨ͡ભҠ  Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ private let deferredDeepLinkCheckpoint = PublishSubject<Void>()

    private let deferredDeepLinkSubject: ReplaySubject<URL?> func didFinishTutorial() { deferredDeepLinkCheckpoint.onNext(()) } private func setUpDeferredDeepLinkCheckpoint() { Observable .combineLatest( deferredDeepLinkSubject, deferredDeepLinkCheckpoint ) { deepLink, _ in deepLink } .take(1) .subscribe(onNext: { [environment] deepLink in // σΟϑΝʔυσΟʔϓϦϯΫͷભҠॲཧ }, onCompleted: { [weak self] in guard let strongSelf = self else { return } strongSelf.deferredDeepLinkSubject.onCompleted() strongSelf.deferredDeepLinkCheckpoint.onCompleted() }) .disposed(by: disposeBag) }
  16. $PPLQBE*OD ©︎ ॳճઃఆঢ়گʹԠͨ͡ભҠ  Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ private let deferredDeepLinkCheckpoint = PublishSubject<Void>()

    private let deferredDeepLinkSubject: ReplaySubject<URL?> func didFinishTutorial() { deferredDeepLinkCheckpoint.onNext(()) } private func setUpDeferredDeepLinkCheckpoint() { Observable .combineLatest( deferredDeepLinkSubject, deferredDeepLinkCheckpoint ) { deepLink, _ in deepLink } .take(1) .subscribe(onNext: { [environment] deepLink in // σΟϑΝʔυσΟʔϓϦϯΫͷભҠॲཧ }, onCompleted: { [weak self] in guard let strongSelf = self else { return } strongSelf.deferredDeepLinkSubject.onCompleted() strongSelf.deferredDeepLinkCheckpoint.onCompleted() }) .disposed(by: disposeBag) }
  17. $PPLQBE*OD ©︎ ॳճઃఆঢ়گʹԠͨ͡ભҠ  Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ private let deferredDeepLinkCheckpoint = PublishSubject<Void>()

    private let deferredDeepLinkSubject: ReplaySubject<URL?> func didFinishTutorial() { deferredDeepLinkCheckpoint.onNext(()) } private func setUpDeferredDeepLinkCheckpoint() { Observable .combineLatest( deferredDeepLinkSubject, deferredDeepLinkCheckpoint ) { deepLink, _ in deepLink } .take(1) .subscribe(onNext: { [environment] deepLink in // σΟϑΝʔυσΟʔϓϦϯΫͷભҠॲཧ }, onCompleted: { [weak self] in guard let strongSelf = self else { return } strongSelf.deferredDeepLinkSubject.onCompleted() strongSelf.deferredDeepLinkCheckpoint.onCompleted() }) .disposed(by: disposeBag) }
  18. $PPLQBE*OD ©︎ ॳճઃఆঢ়گʹԠͨ͡ભҠ  Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ private let deferredDeepLinkCheckpoint = PublishSubject<Void>()

    private let deferredDeepLinkSubject: ReplaySubject<URL?> func didFinishTutorial() { deferredDeepLinkCheckpoint.onNext(()) } private func setUpDeferredDeepLinkCheckpoint() { Observable .combineLatest( deferredDeepLinkSubject, deferredDeepLinkCheckpoint ) { deepLink, _ in deepLink } .take(1) .subscribe(onNext: { [environment] deepLink in // σΟϑΝʔυσΟʔϓϦϯΫͷભҠॲཧ }, onCompleted: { [weak self] in guard let strongSelf = self else { return } strongSelf.deferredDeepLinkSubject.onCompleted() strongSelf.deferredDeepLinkCheckpoint.onCompleted() }) .disposed(by: disposeBag) }
  19. $PPLQBE*OD ©︎ ॳճઃఆঢ়گʹԠͨ͡ભҠ  Ϣʔβʔঢ়ଶ΍ෳ਺ܦ࿏͔Βͷྲྀೖʹରͯ͠׆༻Ͱ͖Δ࢓૊Έ private let deferredDeepLinkCheckpoint = PublishSubject<Void>()

    private let deferredDeepLinkSubject: ReplaySubject<URL?> func didFinishTutorial() { deferredDeepLinkCheckpoint.onNext(()) } private func setUpDeferredDeepLinkCheckpoint() { Observable .combineLatest( deferredDeepLinkSubject, deferredDeepLinkCheckpoint ) { deepLink, _ in deepLink } .take(1) .subscribe(onNext: { [environment] deepLink in // σΟϑΝʔυσΟʔϓϦϯΫͷભҠॲཧ }, onCompleted: { [weak self] in guard let strongSelf = self else { return } strongSelf.deferredDeepLinkSubject.onCompleted() strongSelf.deferredDeepLinkCheckpoint.onCompleted() }) .disposed(by: disposeBag) }
  20. $PPLQBE*OD ©︎ "QQ4UPSF$VTUPN1SPEVDU1BHFʹ͍ͭͯ  Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹདྷͯ΋Β͏ͨΊʹ׆༻Ͱ͖Δ࢓૊Έ ˔ J04͔Βར༻Ͱ͖ΔΑ͏ʹͳͬͨετΞͷ ৽ػೳ ˔ εΫϦʔϯγϣοτɺ"QQϓϨϏϡʔɺϓϩ

    Ϟʔγϣϯ༻ςΩετΛΧελϜͰ͖Δ ˔ ΧελϜϓϩμΫτϖʔδΛ։ͨ͘Ίͷݻ༗ 63-ΛൃߦͰ͖Δ https://developer.apple.com/jp/app-store/custom-product-pages/
  21. $PPLQBE*OD ©︎ 'JSFCBTF%ZOBNJD-JOLTͰ"QQ4UPSF$VTUPN1SPEVDU1BHFΛ࢖͏  Ϣʔβʔʹจ຺Λཧղͨ͠ঢ়ଶͷ··ΞϓϦʹདྷͯ΋Β͏ͨΊʹ׆༻Ͱ͖Δ࢓૊Έ ˔ 'JSFCBTF%ZOBNJD-JOLTΛ࢖͏৔߹ɺʮΞϓϦ͕Πϯετʔϧ͞Εͯͳ͍ ৔߹ͷભҠઌ J f

    ύϥϝʔλ Λઃఆ͢Δ͜ͱͰΧελϜϓϩμΫτϖʔδ Λ։ͨ͘ΊͷQQJEύϥϝʔλ෇͖ͷ"QQ4UPSFϦϯΫΛઃఆͰ͖Δ ˔ ྫ ˓ IUUQTEPNBJOQBHFMJOL MJOLIUUQTEPNBJOOBNF JTJJCJOBNFEPNBJO 
 J fl IUUQTBQQTBQQMFDPNKQBQQJE QQJE%
  22. $PPLQBE*OD ©︎ 'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδʹ͍ͭͯ  Firebase Dynamic LinksͷϓϨϏϡʔϖʔδͱiOS 16͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫʹ͍ͭͯ ˔ 'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδ͸εΩοϓ͢Δ͜ͱ͕Մೳ

    ˓ ˞FGSΦϓγϣϯΛ෇͚Δ͜ͱͰεΩοϓ͢Δ͜ͱ͕Մೳ ˔ 'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδΛදࣔ͢Δ͜ͱͰɺʮ01&/ʯϘλϯ ͕ԡ͞ΕͨࡍʹϖʔετϘʔυʹμΠφϛοΫϦϯΫ͕อଘ͞ΕɺϖʔετϘʔυʹ ΑΔϦϯΫݕূ͕ߦΘΕΔ ˓ ϖʔετϘʔυΛ༻͍ͨϦϯΫݕূ͕ߦΘΕͳ͍ͷͰσΟϑΝʔυσΟʔϓϦϯ Ϋͷ৴པੑ͕མͪͯਖ਼ৗʹಈ͔ͳ͍৔߹͕͋ΔͷͰ஫ҙ
  23. $PPLQBE*OD ©︎ 'JSFCBTF%ZOBNJD-JOLTͷϓϨϏϡʔϖʔδʹ͍ͭͯ  Firebase Dynamic LinksͷϓϨϏϡʔϖʔδͱiOS 16͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫʹ͍ͭͯ ˔ 'JSFCBTF%ZOBNJD-JOLTͷϦϯΫݕূʹϖʔετ

    Ϙʔυ΁ͷΞΫηε͕ඞཁ ˔ J04͔Β1BTUFCPBSEQFSNJTTJPO͕ಋೖ͞Εͨ ˓ ϓϥΠόγʔอޢͷͨΊʹଞΞϓϦ͔Βίϐʔ ϖʔετ͢Δࡍʹڐ୚͕ඞཁʹͳΔ
  24. $PPLQBE*OD ©︎ J04͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫ  Firebase Dynamic LinksͷϓϨϏϡʔϖʔδͱiOS 16͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫʹ͍ͭͯ ˔ 'JSFCBTF%ZOBNJD-JOLTͷέʔε

    ˓ ϓϨϏϡʔϖʔδΛεΩοϓͨ͠ࡍ͸ϖʔετϘʔυΛར༻͠ͳ͍ ˓ 'JSFCBTF%FFQ-JOL1BTUFCPBSE3FUSJFWBM&OBCMFEΦϓγϣϯΛແޮʹ ͨ͠৔߹ɺϖʔετϘʔυͷಡΈࠐΈ͕ߦΘΕͳ͍ ˔ ิ଍"EKVTUʹ͓͍ͯ͸ϖʔετϘʔυಡΈࠐΈ͸σϑΥϧτͰ͠ͳ͍ ˓ "EKVTUͰಋೖ͞Εͨ-JOL.FΛ࢖͏ࡍ͸ϖʔετϘʔυΞΫηεΛ ߦ͏
  25. $PPLQBE*OD ©︎ J04͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫ ˔ μΠφϛοΫϦϯΫΛԡͨ͠ϢʔβʔͷσόΠε৘ใΛอଘ͓ͯ͠Γɺ 'JSFCBTF4%,͸ॳճىಈ࣌ʹαʔόʹ୺຤৘ใΛૹΔ͜ͱͰɺԡ͞Εͨ Ͱ ͋Ζ͏ μΠφϛοΫϦϯΫΛϨεϙϯεͱͯ͠ฦ٫͢Δ ˓

    ͜ͷࡍʹ୺຤৘ใ͔ΒͰ͸ΞϓϦΠϯετʔϧલʹԡ͞ΕͨϦϯΫΛҰ ҙʹಛఆͰ͖ͳ͍৔߹͕͋Δ ˙ σΟϑΝʔυσΟʔϓϦϯΫ͕ਖ਼͘͠ಈ͔ͳ͍৔߹͕ग़ͯ͘Δ ˙ ΞϓϦͷΠϯετʔϧ਺͕աখධՁ͞ΕΔ  Firebase Dynamic LinksͷϓϨϏϡʔϖʔδͱiOS 16͔ΒͷσΟϑΝʔυσΟʔϓϦϯΫʹ͍ͭͯ
  26. $PPLQBE*OD ©︎ έʔεελσΟൢଅΩϟϯϖʔϯ ˔ ൢଅΩϟϯϖʔϯ ˓ ྫ ΩϟϯϖʔϯྲྀೖϢʔβʔͷ$73 ΍$1" ʹର͢Δ-57

    ܭଌΛߦ͍͍ͨ  ࢪࡦ΁ͷద༻ *CVR(ίϯόʔδϣϯ཰): ໨తߦಈΛͯ͘͠Ε͔ͨΛଌΔࢦඪ *CPA(֫ಘ֫ಘ୯Ձ): ৽نϢʔβʔ֫ಘͷͨΊʹ͔͔ͬͨඅ༻ *LTV(ސ٬ੜ֔Ձ஋): Ϣʔβʔ͕ΞϓϦʹͲΕ͚ͩͷརӹΛ΋ͨΒ͔͢Λද͢΋ͷ
  27. $PPLQBE*OD ©︎ μΠφϛοΫϦϯΫʹΧελϜύϥϝʔλΛ෇༩ͯ͠ΞϓϦଆͰϋϯυϦϯά ˔ μΠφϛοΫϦϯΫΛར༻ͯ͠ΞϓϦଆͰྲྀೖݩΛ൑ผ͍ͨ͠৔߹ʹɺΧε λϜύϥϝʔλΛ෇༩ͯ͠ΞϓϦଆͰϋϯυϦϯά͢Δͷ΋༗ޮ • https://customdomain.page.link/?link=https:// yourdomain.name?custom_parameter=:value&ibi=:custom_scheme&isi=:app store_id

    ˓ ͜ͷΑ͏ͳܗࣜͰμΠφϛοΫϦϯΫΛ૊ΈཱͯΔͱΞϓϦଆͰ IUUQTZPVSEPNBJOOBNF DVTUPN@QBSBNFUFSWBMVFͷܗࣜͰσΟ ʔϓϦϯΫ63-͕ड͚औΕΔͷͰDVTUPN@QBSBNFUFSͷ஋Λ΋ͱʹϩ άૹ৴ͳͲΛߦ͏  ࢪࡦ΁ͷద༻ - ൢଅΩϟϯϖʔϯ
  28. $PPLQBE*OD ©︎ "EKVTUΛ׆༻͢Δ  ࢪࡦ΁ͷద༻ - ൢଅΩϟϯϖʔϯ ˔ "EKVTUͰੜ੒͞ΕͨτϥοΧʔ෇͖ϦϯΫ ˓

    ΞϓϦʹ࣮૷͞ΕͨFWFOUUSBDLFSͱ૊Έ߹ΘͤΔ͜ͱͰΩϟϯϖʔϯʹ Αͬͯྲྀೖͨ͠Ϣʔβʔͷ-57΍ίϗʔτΛμογϡϘʔυ্ͰݟΕΔ ˓ ֤छ޿ࠂϓϥοτϑΥʔϜͱ࿈ܞ͢Δ͜ͱͰϢʔβʔηάϝϯτΛઃఆ ͨ͠Γ͢Δ͜ͱ΋Մೳ
  29. $PPLQBE*OD ©︎ έʔεελσΟ༑ୡট଴ ˔ ༑ୡট଴ ˓ Ϣʔβʔ͕༑ୡΛট଴Ͱ͖ΔΑ͏ʹট଴ϦϯΫΛੜ੒ ˓ 'JSFCBTF%ZOBNJD-JOLT"EKVTU ˙

    ύϥϝʔλΛ෇༩͢Δ͜ͱͰಈతϦϯΫੜ੒Ͱ͖Δ͕ɺଞϢʔβʔʹ ରͯ͠4/4΍ϝοηʔδϯάΞϓϦ౳Ͱڞ༗͞ΕΔ͜ͱ͕༧૝͞Ε ΔͨΊɺ௕͗͢ΔϦϯΫ͸ආ͚͍ͨ  ࢪࡦ΁ͷద༻ - ༑ୡট଴
  30. $PPLQBE*OD ©︎ 'JSFCBTF%ZOBNJD-JOLT#VJMEFSΛ׆༻͢Δ ˔ 'JSFCBTF%ZOBNJD-JOLT#VJMEFS ˓ ΞϓϦͰࢦఆͨ͠ύϥϝʔλΛར༻ͯ͠ ୹ॖ63- ୹͍μΠφϛοΫϦϯ ΫൃߦͰ͖Δ

    ˙ ˞'JSFCBTFίϯιʔϧͰੜ੒͞ΕΔΑ͏ͳܗ͕ࣜͩɺ'JSFCBTFίϯ ιʔϧͷҰཡʹ͸ग़ͯ͜ͳ͍ ˙ IUUQTDPOTPMF fi SFCBTFHPPHMFDPNQSPKFDUQSPKFDU@OBNF EVSBCMFMJOLTEFUBJMTEZOBNJD@MJOLʹ௚઀ΞΫηε͢Δ͜ͱͰϦϯ Ϋৄࡉϖʔδʹ͸ඈ΂Δ ˓ ΫϦοΫ਺΍Πϯετʔϧ਺ͳͲ͸ίϯιʔϧͰݟΕͳ͍ͷͰɺ3&45"1*͔ΒݟΔ ͜ͱʹͳΔ  ࢪࡦ΁ͷద༻ - ༑ୡট଴
  31. $PPLQBE*OD ©︎ ·ͱΊ ˔ σΟʔϓϦϯΫΛ࣮ݱ͢ΔͨΊͷػೳ ˓ 6OJWFSTBM-JOLT$VTUPN63-4DIFNF ˔ Πϯετʔϧঢ়گʹدΒͳ͍ϦϯΫੜ੒ ˓

    σΟϑΝʔυσΟʔϓϦϯΫ ˔ σΟʔϓϦϯΫΛखܰʹར༻Ͱ͖ΔΑ͏ʹ͢ΔͨΊͷαʔϏε ˓ 'JSFCBTF%ZOBNJD-JOLT"EKVTUͳͲ ˔ ϓϨϏϡʔϖʔδ΍ετΞϖʔδΛΩϟϯϖʔϯ༻ʹΧελϚΠζ͢Δ͜ͱͰϢ ʔβʔʹจ຺Λҙࣝ͠ଓ͚ͯ΋Β͑Δ ˔ ࢪࡦ࣮ࢪͷࡍʹ'JSFCBTF%ZOBNJD-JOLT΍"EKVTUΛ࢖͏͜ͱͰࢪࡦ෼ੳʹ΋׆ ༻Ͱ͖Δ