RevenueCatからの移行
移行は5つのステップで構成されており、平均所要時間は約2時間です。移行の90%は1営業日以内に完了します。
- 主要な違いを理解し、Adaptyアカウントを作成・準備する (5分);
- RevenueCat SDKの代わりに、各プラットフォーム向けのAdapty SDKをインストールする(iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity)(1時間);
- AdaptyへのApple App Storeサーバー通知を設定し、オプションでrawイベント転送を設定する (5分);
- アプリのアップデートをテストしてリリースする (30分);
- (オプション)RevenueCatサポートにCSV形式の過去データをリクエストする (5分);
- (オプション)Adaptyサポート経由で過去データをインポートする (30分)。
サブスクライバーは自動的に移行されます
サブスクリプションを有効にしたことがあるすべてのユーザーは、Adapty SDKを搭載した新しいバージョンのアプリを開いた瞬間に自動的にAdaptyへ移行されます。サブスクリプションのステータス検証とプレミアムアクセスは自動的に復元されます。
Adapty SDKを搭載したアプリの新バージョンをリリースする前に、必ずリリースチェックリストを確認してください。
主要な違いを理解し、Adaptyアカウントを作成・準備する
AdaptyとRevenueCatのSDKは設計が似ています。最大の違いはネットワーク使用量とスピードです。Adapty SDKは、必要な情報をリクエスト時にできる限り高速に提供するよう設計されています。たとえば、ペイウォールをリクエストする際、オンボーディングやペイウォールの事前構築に使えるリモートコンフィグがまず返され、その後プロダクトが専用リクエストで取得されます。
名称は少し異なります:
| RevenueCat | Adapty |
|---|---|
| Package | Product |
| Offering | Paywall |
| Paywall | Paywall Builder |
| Entitlement | Access level |
Adaptyにはプレースメントというコンセプトがあります。これはアプリ内でユーザーが購入できる論理的な場所です。ほとんどの場合、プレースメントは1〜2つです:
- オンボーディング(全購入の80%がここで発生するため);
- 全般(オンボーディング後の設定画面やアプリ内で表示)。
Adapty SDKのインストールとRevenueCat SDKの置き換え
各プラットフォーム向けのAdapty SDKをアプリにインストールしてください(iOS、Android、React Native、Flutter、Kotlin Multiplatform、Unity)。
アプリ側でいくつかのSDKメソッドを置き換える必要があります。よく使われる関数とAdapty SDKでの置き換え方法を見ていきましょう。
SDKのアクティベーション
Purchases.configure を Adapty.activate に置き換えてください。
ペイウォール(オファリング)の取得
Purchases.shared.getOfferings を Adapty.getPaywall に置き換えてください。
Adaptyでは、常にプレースメントIDを使ってペイウォールをリクエストします。実際には1〜2個のペイウォールしか取得しないため、SDKの高速化とネットワーク使用量の削減を目的として意図的にこのような設計にしています。
ユーザー(カスタマープロファイル)の取得
Purchases.shared.getCustomerInfo を Adapty.getProfile に置き換えてください。
プロダクトの取得
RevenueCatでは、Purchases.shared.getOfferingsを使い、その後self.offering?.availablePackagesで取得します。
Adaptyでは、まずペイウォールをリクエストして(上記参照)Adaptyのリモートコンフィグにすぐアクセスし、その後Adapty.getPaywallProductsでプロダクトを取得します。
購入する
Purchases.shared.purchase を Adapty.makePurchase に置き換えてください。
アクセスレベル(エンタイトルメント)の確認
カスタマープロファイルを取得し(上記参照)、
customerInfo?.entitlements["premium"]?.isActive == true
を以下に置き換えてください:
profile.accessLevels["premium"]?.isActive == true
購入の復元
Purchases.shared.restorePurchases を Adapty.restorePurchases に置き換えてください。
ユーザーのログイン状態を確認する
Purchases.shared.isAnonymous を if profile.customerUserId == nil に置き換えてください。
ユーザーのログイン
Purchases.shared.logIn を Adapty.identify に置き換えてください。
ユーザーのログアウト
Purchases.shared.logOut を Adapty.logout に置き換えてください。
App Storeのサーバーサイド通知をAdaptyに切り替える
手順はこちらをご覧ください。
アプリの新バージョンをテストしてリリースする
ここまで読んでいるということは、すでに以下の作業が完了しているはずです:
- Adapty ダッシュボードの設定
- Adapty SDKのインストール
- SDKロジックのAdapty関数への置き換え
- App StoreのサーバーサイドサービスをAdaptyに切り替え(オプションでRevenueCatへのrawイベント転送を有効化)
- サンドボックスでの購入テスト
- 新しいアプリのリリース
上記の項目を確認したら、サンドボックスでテスト購入を行い、アプリをリリースしてください。
リリースチェックリストを確認してください。
リストを使って既存のインテグレーションを検証し、アトリビューションやアナリティクスインテグレーションなどの追加機能の設定も行いましょう。
(オプション)RevenueCatの過去データをCSV形式でエクスポートする
過去データのインポートは慌てないでください
過去データのインポートを行う前に、SDK搭載バージョンのリリース後、少なくとも1週間は待つ必要があります。その間にSDKから購入金額に関する情報がすべて取得されるため、インポートされるデータがより正確になります。
RevenueCatの公式ドキュメントの手順に従って、RevenueCatからCSV形式で過去データをエクスポートしてください。
(オプション)RevenueCatサポートにGoogle Purchase Tokensをリクエストする
Google Playのトランザクションをインポートする場合は、RevenueCatのサポートページからGoogle Purchase Tokensが含まれたCSVファイルをリクエストしてください。Google Purchase Tokenは、Google Playが各トランザクションに付与する一意の識別子で、Adaptyで購入を正確に追跡・検証するために必要です。この情報は標準のエクスポートファイルには含まれていません。ファイルには以下の3つの列が含まれます:
user_idgoogle_purchase_tokengoogle_product_id
過去データのインポートをご依頼ください
ウェブサイトのメッセンジャーまたは[email protected]にCSVファイルを添付してご連絡ください。
- RevenueCatからエクスポートしたCSVファイルをサポートチームに直接送付してください。
- Google Playのトランザクションをインポートする場合は、RevenueCatサポートから受け取ったGoogle Purchase Tokensが含まれたCSVファイルも添付してください。
- Customer User ID(AdaptyのメインユーザーID)として使用するユーザーIDをお知らせください:
rc_original_app_user_idまたはrc_last_seen_app_user_id_aliasのいずれかです。
サポートチームがトランザクションをAdaptyにインポートします。各トランザクションについて以下のデータがインポートされます:
| パラメータ | 説明 |
|---|---|
| user_id | Customer User ID。Adaptyおよびあなたのシステムにおけるユーザーのメイン識別子。 |
| apple_original_transaction_id | サブスクリプションチェーンの場合、store_original_transaction_idでリンクされた元のトランザクションの購入日。 |
| google_product_id | Google Play StoreのプロダクトID。 |
| google_purchase_token | 各トランザクションに対してGoogle Playが発行する一意の識別子。検証に必要。 |
| country | ユーザーの国。 |
| created_at | ユーザー作成日時。 |
| subscription_expiration_date | サブスクリプションの有効期限日時。 |
| エンドユーザーのメールアドレス。 | |
| phone_number | エンドユーザーの電話番号。 |
| idfa | Appleがユーザーのデバイスに割り当てる広告識別子(IDFA)。 |
| idfv | 1人の開発者の全アプリに割り当てられ、デバイス上でそれらのアプリ間で共有されるベンダー識別子(IDFV)。 |
| advertising_id | 広告トラッキングのためにAndroid OSが提供する一意の識別子。 |
| attribution_channel | マーケティングチャネル名。 |
| attribution_campaign | マーケティングキャンペーン名。 |
| attribution_ad_group | アトリビューションの広告グループ。 |
| attribution_ad_set | アトリビューションの広告セット。 |
| attribution_creative | アトリビューションのクリエイティブキーワード。 |
また、Amplitude、Mixpanel、AppsFlyer、Adjust、FacebookAdsのインテグレーション識別子もインポートされます。
よくある質問
Adapty SDKのインストールとAdapty SDK搭載の新バージョンのリリースが完了しました。Adapty SDKを含む新バージョンにアップデートしていない既存のサブスクライバーはどうなりますか?
ほとんどのユーザーは夜間に充電する際にApp Storeが全アプリを自動更新するため、問題にはならないでしょう。アップデートしていない有料サブスクライバーが若干残る可能性はありますが、引き続きプレミアムコンテンツにアクセスできます。強制的にアップデートさせる必要はありません。
RevenueCatから過去データをできるだけ早くエクスポートする必要がありますか?それとも失ってしまいますか?
急ぐ必要はありません。まずAdapty SDKでリリースを行い、その後に過去データをご提供ください。ユーザーの支払い履歴を復元し、プロファイルとチャートに反映します。
MMP(AppsFlyer、Adjustなど)やアナリティクス(Mixpanel、Amplitudeなど)を使用しています。すべて正常に動作するか確認するにはどうすればいいですか?
まず、データを送信したいサードパーティサービスのIDをSDK経由でAdaptyに渡す必要があります。アトリビューションインテグレーションとアナリティクスインテグレーションのガイドをご参照ください。過去データや既存ユーザーについては、RevenueCatからエクスポートしたデータからそれらのIDを必ず渡してください。