Slide 1

Slide 1 text

リーダーアプリに 外部課⾦リンクを設置する Go Takagi 20 22 / 12 / 22 potatotips # 80 iOS / Android 開発 Tips 共有会

Slide 2

Slide 2 text

Me ( Go Takagi ) ‣ID ( GitHub / Twitter ) • shimastripe / shimastriper ‣Work • 株式会社 ⽇本経済新聞社 ‣ iOS 紙⾯ビューアーアプリ の開発を担当 ‣Like • Swift / ⾃動化 / 柴⽝ 2 電⼦版広報⽝デンシバ

Slide 3

Slide 3 text

登壇履歴、こちらもお願いします 3

Slide 4

Slide 4 text

リーダーアプリ?

Slide 5

Slide 5 text

5 https://developer.apple.com/jp/support/reader-apps https://www.nikkei.com/article/DGXZQOGN 310 GQ 0 R 3 0 C 22 A 3 0 0 00 0 0

Slide 6

Slide 6 text

リーダーアプリ: 動画や電⼦書籍などのアプリ ‣外部サイトへのリンクを設置できるようになった • アカウントの開設 • コンテンツの購⼊ • サブスクリプション ‣⾃社サイトでの開設‧購⼊‧契約はブラウザ経由のみ • アプリで完結させる場合、通常 In App Purchaseを要求される 6

Slide 7

Slide 7 text

これまでの紙⾯ビューアー: InAppPurchase 無し ‣事前に⽇経IDの有料会員になっていないと使えないアプリ 7

Slide 8

Slide 8 text

アプリから外部課⾦動線に⾶ばせるように対応! 8 シールド表⽰

Slide 9

Slide 9 text

ちなみにシールド以外にも様々な制約が...... ‣In App Purchase と共存不可 ‣外部リンク (URL) はアプリ内で1つのみ • ボタンにわかりやすく明⽰する ‣リダイレクト‧クエリパラメータ使⽤禁⽌ • トラッキング‧コンバージョンのテストはできない ‣サービス内容(商品)や価格の表⽰禁⽌ • 外部サイトへの遷移明⽰しかできない ‣ルールが更新された場合30⽇以内にアプリ側は対応必須 ‣etc... 9

Slide 10

Slide 10 text

仕様はアップデートされるので 最新を必ずチェックしてください

Slide 11

Slide 11 text

⼀連の流れを紹介!

Slide 12

Slide 12 text

外部リンクアカウントエンタイトルメントの申請 ‣フォームから申請 • この URL は Account Holder からしか開けないのに注意 ‣チェック項⽬に回答 (2022年7⽉27⽇時点の例を残しておきます) • Is the primary functionality of your app to o ff er one or more of the following: magazines, newspapers, books, audio, music, or video? • Does your app allow people to sign in to an account? • Can people access content or services purchased outside of your app (e.g., on your website) by signing in to your app? • Are your appʼs content and services digital only? • Do the content and services accessed in your app facilitate real-time, person-to- person services (e.g., providing tutoring services, medical consultations, real estate tours, or fi tness training)? • Does your app o ff er in-app purchases? • Have you submitted your app for review? ‣App Info を記載 • Bundle Id と AppStore or Test fl ight URL • これは未公開アプリの限定公開 Test fl ight URL で申請しても有効 1 2 https://developer.apple.com/contact/request/external-link-account

Slide 13

Slide 13 text

エンタイトルメントの有効化 ‣Additional Capabilities の項⽬が申請が通ると出現 • ここも Account Holder のみ確認できる 1 3

Slide 14

Slide 14 text

App 側で有効化 (entitlements / Info.plist) 1 4 https://developer.apple.com/jp/support/reader-apps entitlements Info.plist ‣ボタンの設置 • ⽀払い権限がある場合のみ有効化

Slide 15

Slide 15 text

仕様通りのシールドを作る 😇 (deprecated) ‣Font / Padding / Size / SystemColor が全て指定 • iPhone / iPad の仕様差もある...... (SplitView は指定されてない) 1 5 https://developer.apple.com/support/downloads/Reader_App_Modal_Speci fi cations.zip

Slide 16

Slide 16 text

完成!審査に提出!! ‣が、20⽇ちょっとレビューが進まない...... ‣そのままiOS 16 がリリースしてしまう • すると......? 1 6

Slide 17

Slide 17 text

iOS 1 6 から API が追加 + 変更 ‣ExternalLink API が登場 • これまでは StoreKit の既存の API で実現していた • iOS 1 6 からはこれを使ってね ^ ^ メールが来る • https://developer.apple.com/documentation/storekit/ external_link_account • シールドも SDK が⽤意してくれるように!! • ただ async function なので Concurrency に対応する必要あり 1 7

Slide 18

Slide 18 text

追加対応して再提出 ‣通った!! • アップデートを通して、現状リジェクトされてない • デメリットとなるような体験は踏んでいない • 審査ペースも1⽇程度 1 8

Slide 19

Slide 19 text

五⽉⾬ Tips ‣外部リンクの更新はできる? • 1バージョン毎に変えれる • 動的な変更はできない、リダイレクトも不可 • ボタンに表⽰するため、シンプルなURLを⽤意したほうが美しい ‣シールドのイベント計測は...? • iOS 1 6 未満は⾃前実装だからできるけど、16 からはSDKが⽤意するから不可 ‣Entitlementsが増えるため、Devに影響 • Test fl ight に別 BundleId であげるユースケースがある場合 
 そちらにも Entitlements が必要になる 1 9

Slide 20

Slide 20 text

まとめ ‣リーダーアプリ外部サイトリンクがつけられるようになった • iOS 1 6 からはとても楽 • ⼀度対応してから、後に In App Purchase に変えることもできそう ‣事前予想以上の購読者を獲得。今後も継続して設置予定 • シールド経由 + トラッキングできないため、劇的な期待はできない • 貢献している数字は取れている、チューニングは難しい 2 0