Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
アプリ内課金 リジェクトとAppleとのやり取りのお話
Search
hayatan
December 15, 2021
Business
1.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アプリ内課金 リジェクトとAppleとのやり取りのお話
Appleと具体的なやり取り(電話とか)のお話
hayatan
December 15, 2021
More Decks by hayatan
See All by hayatan
DMMオンラインサロンアプリのSwift化
hayatan
0
650
ReactNative のアプリを Swift に置き換えてます
hayatan
0
770
Other Decks in Business
See All in Business
2026.9_中途採用資料.pdf
superstudio
PRO
5
120k
LW_brochure_engineer
lincwellhr
1
45k
uniam_事業概要.pdf
uniam
PRO
0
220
増え続ける運用を、 Skill化する"型"でさばく
morimori3
0
300
【DearOne】Dear Newest Member
hrm
3
20k
キャリアを紡ぐ透明性〜肩書に縛られない転職を実現する/Transparency Weaving Your Career
ikuodanaka
3
1.1k
コーポレートストーリー(新規投資家様向け会社説明資料)
gatechnologies
2
21k
アッテル会社紹介資料/culture deck
attelu
11
17k
決める人と作る人を、 分けない / Deciders build. Builders decide.
hirokiyamamoto14
PRO
0
200
どうせなら「楽しい仕事」をする
kozotaira
0
350
kintone-ai-first-steps.pdf
kintonepapers
0
120
誰かの役に立つアウトプットの作り方〜学びの循環に飛び込もう!
ikuodanaka
9
3k
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
480
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
570
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
530
Leo the Paperboy
mayatellez
10
2.3k
The Pragmatic Product Professional
lauravandoore
37
7.4k
For a Future-Friendly Web
brad_frost
183
10k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
380
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
580
Transcript
アプリ内課金 リジェクトとAppleとのやり取りのお話 2021/12/15 DMM iOS meetup #2
About me 大門 弘明(だいもん ひろあき) DMM.com のiOSエンジニア。 現在はオンラインサロン事業部に所属し、 直近だと ReactNative
→ Swift 移行や、 アプリ内課金の提供などに携わる。 趣味はゲーム、FFXIV。 最近星を救うために月に行きました。
今日お話すること • AppStoreリジェクトの経緯 ◦ アプリ内課金を実装してください!のリジェクト • わたしたちがとった対応 • Appleとどのようなやり取りを行ったのか •
コードは一切出てきません
DMMオンラインサロンアプリについて オンラインサロンに特化したクローズド SNS 機能 • テキスト・画像・動画の投稿 • 投稿に対するコメントや返信 • ライブ配信の視聴
特徴 • オンラインサロンオーナー /会員専用 • 入会手続きはWebから • 以前はアプリからは入会導線なし ◦ 最近アプリ内課金リリースで対応! 入 会 会 員 管 理 ・集 客 会員限定の交流 DMMオンライン サロンアプリ
AppStoreリジェクトの経緯
リジェクト from: Apple Guideline 3.1.1 - Business - Payments -
In-App Purchase We noticed that your app offers a subscription with a mechanism other than the in-app purchase API. アプリがアプリ内購入API以外のメカニズムで サブスクリプションを提供していることに気付きました。
Why? • 3.1.1 App内課金 ◦ 結構長い ▪ Apple以外の決済手段で課金させることは NGと解釈 •
当時誤って入会導線(Webでの課金)をつけてしまった ◦ 修正しても覆ることはなかった
わたしたちの言い分 サブスクリプション方式App内課金を導入できない & する必要はない
わたしたちの言い分 • オンラインサロンはApp外部のオフラインのサービス提供も含む ◦ オフラインイベントの参加権など ◦ ガイドライン3.1.3(e)「ユーザーがAppの外部で使用する物理的な商品やサービス」にあたるので は? • デジタルジタルデータのみで完結しないサービス
◦ オーナーや会員が、自発的かつ人為的に起こした コミュニケーションに関するアクションが対価 • 価格あたりのサービス内容が保証できない ◦ 多様な価格設定 ◦ そもそもAppleのサブスクにのせられない
レビューガイドライン3.1.3(e) 3.1.3(e)Appの外部で使用する商品やサービス:ユーザーがAppの外部で使用する物 理的な商品やサービスをAppで購入できるようにする場合、そうした商品の支払いには App内課金以外(Apple Payやクレジットカードなど)の方法を使用する必要があります。 https://developer.apple.com/jp/app-store/review/guidelines/#goods-and-services-o utside-of-the-app
一度目の対戦 このタイミングで1度目の Apple担当者との電話 (この当時はまだ自分はオンラインサロンにいない) やはりだめです。 対応して再申請してください。 フィードバックに同意できない場合があることは理解している。 しかし、だめものはだめ。 サブスクリプション方式 App内課金を導入できないし
する必要はないのでは?
Appleとの対戦結果 • DMMオンラインサロンはデジタルコンテンツであり、 リジェクトは覆らなさそう。
対応
対応策の検討 • ブラウザ版に移行する • アプリ内課金を実装する ◦ アプリ内通貨を買ってもらい支払う形式にする ◦ サブスクリプションを導入する
対応策の検討 • ブラウザ版に移行する ◦ 先にこちらから対応 • アプリ内課金を実装する ◦ 一旦保留
ブラウザ版に移行 • 万が一アプリが削除されてしまったときに備えて対応 • 一旦ブラウザ版の改修に注力 ◦ iOSでWebPushを実現するためのPush7の導入 ◦ 機能改善・UI改善等 •
このときはまだiOSエンジニアがいない
iOS課金導入・・・?
どのようにアプリ内課金を実現するか このあたりでオンラインサロンの開発にJOIN
どのようにアプリ内課金を実現するか • アプリ内課金でアプリ内通貨を買ってもらい支払う形式にする ◦ 前払式決済手段の導入 ◦ 自由な価格設定ができる ◦ 自動更新(サブスク)ができない •
アプリ内課金でサブスクリプションを導入する ◦ サロンごとに価格が違うのでサロンごとに課金アイテムを作成? ◦ 自由な価格設定ができない ◦ 課金アイテム数の上限 ◦ 課金アイテムの追加は手動 アプリ内通貨だと自動更新できないけど、 サブスクも難しそう・・・
言い分を変えてみる
レビューガイドライン3.1.3(a)「リーダー」App 以前に購入したコンテンツまたはコンテンツのサブスクリプション(具体的には、雑誌、新 聞、書籍、オーディオ、音楽、ビデオ)に、ユーザーがアクセスできるようにすることは許 可されています。「リーダー」Appは、無料ユーザー層向けにアカウント作成の機能や、 既存ユーザー向けにアカウント管理の機能を含めることができます。 ワンチャンあるのでは・・・?
Appleと二度目の対戦
Appleと二度目の対戦 だめ。 これはAppStoreには適していない。 3.1.3(a) 「リーダー」App に該当するように修正しました。
Appleと二度目の対戦 続き このコンテンツはガイドライン 3.1.3「その他の購入方法」には当てはまらない。 ガイドライン3.1.3(b)マルチプラットフォームサービスも読んでね。
レビューガイドライン3.1.3(b) 複数のプラットフォームで動作するAppでは、マルチプラットフォームのゲームにおける 消耗アイテムなどを含め、別のプラットフォーム上のAppやデベロッパのWebサイトで ユーザーが入手したコンテンツ、サブスクリプション、機能へのアクセスを許可すること が可能です。ただし、そうしたアイテムは、App内のApp内課金アイテムとしても購入可 能でなければなりません。 https://developer.apple.com/jp/app-store/review/guidelines/#multiplatform-services
Appleと二度目の対戦 続き フィードバックに同意できない場合があることは理解している。 でもだめ。 明確にリーダーAppに関する言及がないが、なにが理由か? ビジネスモデル的に Appleの課金に当てはめることが難しいのだがどうすればいい?
Appleと二度目の対戦結果 • 「リーダー」Appかどうかの追求はなし • ガイドライン3.1.3(b) ◦ 確かにWebでもアプリと同様のことはでき、マルチプラットフォームに当たりそう • Kindleなどの電子書籍アプリとの違いは? ◦
Kindleなどはマルチプラットフォームだけど課金はない ◦ おそらく「リーダー」App として審査に通っている
異議申し立て
異議申し立て フォームから異議申し立てを行うことができる https://developer.apple.com/contact/app-store/?topic=appeal
異議申し立て内容 • アプリ内課金を適応するのには課金モデルが合わず難しい • だからReaderとして該当するように機能を絞っている • それでもReaderに該当しないのはコンテンツの種類が問題なの? そして送信から2日後、 「異議申し立ての結果について話したいから電話する」 とAppleから返信が来る
電話でのやり取り
電話で話す目的 • リーダーAppに該当しない理由を聞く • 次にこちらが取るべき手段を知る
電話を受ける体制 • できれば営業時間にかけてほしい旨を返信 ◦ 対応できない日も明記 • こちらはEM(電話もってる)+ エンジニア2人 ◦ 電話がかかってきたら
Zoom越しに会話できる体制を整える • シミュレーションを完璧に ◦ Appleに聞かれそうなこと、聞きたいことをまとめる ◦ オンラインサロンのビジネスに関する説明なども 指定した時間帯で電話がかかってきた 日本語で対応してくれた
電話でのやり取り DMMオンラインサロンアプリは 3.1.1の却下となっています。 これに関してご質問・懸念点をお持ちなのですか? 3.1.3(a) 「リーダー」App に該当すると思っている。 どうしてそうならないのかを教えてほしい。 DMMオンラインサロンのビジネスモデルでは リーダーAppとして出すことはできません。
リーダーAppに該当しない理由 • 原則として有料デジタルサービスはアプリ内課金の購入が必須 • 特例として「雑誌、新聞、書籍、オーディオ、音楽、ビデオ」 をサービスの内容として提供している場合のみリーダーAppが許可されている • DMMオンラインサロンのビジネスモデルはこれに当てはまらない ガイドラインに具体的には・・・ と示されている
レビューガイドライン3.1.3(a)「リーダー」App 以前に購入したコンテンツまたはコンテンツのサブスクリプション(具体的には、雑誌、新 聞、書籍、オーディオ、音楽、ビデオ)に、ユーザーがアクセスできるようにすることは許 可されています。「リーダー」Appは、無料ユーザー層向けにアカウント作成の機能や、 既存ユーザー向けにアカウント管理の機能を含めることができます。 https://developer.apple.com/jp/app-store/review/guidelines/#reader-apps ワンチャンなかった
電話でのやり取り アプリ内課金は実現したいとも考えている。 しかし、我々のビジネスモデルでは、 AppleのAPIでサブスクリプションを実現す ることは難しいので相談したい。 結論から言うとAppStoreのアプリ内課金では、 DMMオンラインサロンのようなモデルをサポートしていない。
AppStoreで実現が難しい理由 • サブスク型のアプリ内課金が必要 • サロン毎に App Store Connect でアイテムを作成し審査に出す必要がある •
これをデベロッパー側で管理することは難易度が高い • 消耗型コンテンツとして購入させた場合期限がなくアクセスできるようにする必要が ある ◦ これに関しては、このあとかかってくる 2回目の電話でアップデート情報あり。 一体どうすれば・・・
再びAppleから電話がかかってくる
電話でのやり取り(2回目) 先程の会話に、いくつか訂正・アップデートがある。 アプリ内通貨を利用して、 時間制限のあるアイテムを販売することは可能である。 この方法を推奨する。 自動更新サブスクリプションの場合は、特に審査が厳しく、 追加されるコンテンツの量なども審査の対象となる。
アプリ内通貨について • 時間制限のあるアイテムを販売することは可能。 • この方法で販売することが自由度も高く現実的であると提案する。 • ただし、自動更新したい場合は、自動更新サブスクリプション型のApp内課金を実 装する必要がある。 ◦ 自動更新にせずユーザーに更新を促す機能を作成するのは
OK
自動更新サブスクリプションについて • 自動更新型の場合は、審査が厳しくなる。 ◦ サービスそのものがダイナミックなコンテンツ( Netflix, Hulu など毎日コンテンツが 1000件単位で追 加される)が対象。
◦ サービスの内容、コンテンツの量なども審査の対象となる。 ◦ 1日1回ブログを更新するようなコンテンツでは却下の可能性がある。 • 有料のオンラインサロンに無制限にアクセスできるような形の場合は自動更新サブ スクリプションでも審査が通る可能性が高い
2度の電話を終えて • リーダーAppには該当しない • サブスクリプションは現実的ではない • アプリ内通貨を販売することが現実的だとの提案 • 意外とちゃんと話を聞いてもらえて、答えてくれた
対ありでした!
どのようにiOS課金を実現するか • アプリ内課金でアプリ内通貨を買ってもらい支払う形式にする ◦ 前払式決済手段の導入 ◦ 自由な価格設定ができる ◦ 自動更新(サブスク)ができない ◦
Appleの担当者も推奨 • アプリ内課金でサブスクリプションを導入する ◦ サロンごとに価格が違うのでサロンごとに課金アイテムを作成? ◦ 自由な価格設定ができない ◦ 課金アイテム数の上限 ◦ 課金アイテムの追加は手動 方針が定まってきた・・・!
どのようにiOS課金を実現するか • アプリ内通貨「サロネン(SLN)」を実装 • ユーザーにはサロネンを購入してもらって、サロネンを消費して入会する • iOSから入会した場合は、自動更新されない 先日リリースしました! 開発に関する詳しいお話はまた別の機会に!
まとめ • リーダーAppとして出せるコンテンツは決まっている ◦ 特例として「雑誌、新聞、書籍、オーディオ、音楽、ビデオ」のみ • サブスクリプションは現実的ではない • 今回の場合 Apple
のおすすめはアプリ内通貨 ◦ アプリ内通貨でサブスクをするのはダメ ◦ Apple担当者は結構いい人だった • アプリ内通貨「サロネン(SLN)」をリリース