経緯
以前の記事(UnityでPurchase(課金)を実装する)でPurchaseを実装して、iTunes Connectでアプリ公開の申請を行ったが、リジェクトされた。
その対応を記載する。(ただし、現在、申請許可待ち。申請が通ったら記事を更新する。)
ちなみに、以下がリジェクト時のメッセージ
差出人: Apple
0. 9.0 BEFORE YOU SUBMIT: IN-APP PURCHASE
Before You Submit
We are unable to complete the review of your app since one or more of your in-app purchase products have not been submitted for review.
Please be sure to take action and submit your in-app purchase(s) AND upload a new binary in iTunes Connect. Learn more about submitting in-app purchases for review in the In-App Purchase Configuration Guide for iTunes Connect.
Once you've submitted your in-app purchases and uploaded a new binary, we can proceed with your review.
Note: Apps that offer in-app purchase products that must be restorable are required to include a "Restore" feature. The following in-app purchase types must be restorable:
- non-consumable products
- auto-renewing subscriptions
- free subscriptions
For more information, please see the Restoring Purchased Products section of the In-App Purchase Programming Guide.
英語は苦手なので、あまり何を言っているか理解できていない部分もあるが、要は、iOSでPurchase(Non Consumable1)を利用するときは、リストア2機能をちゃんと実装してねってことだと思う。
今までは**「再購入3」をした場合にリストアが走るようになっていた**が、そうではなく、インストール直後にリストアが走るようにした。
前提
各ツール・プラグイン等
- Unity 5.5.0p3
- Xcode 8.2.1
プラットフォーム
- 開発機
- macOS (MacBookPro)
- Windowsの場合は大差はないが、適宜読み替えること
- macOS (MacBookPro)
- リリース
- Android
- iOS
内容
IAPButton.csの修正
public void OnInitialized (IStoreController controller, IExtensionProvider extensions) {
this.controller = controller;
this.extensions = extensions;
// 以下の記載を追加
extensions.GetExtension<IAppleExtensions>().RestoreTransactions(result => {
if (result) {
// リストア成功時の処理を書く
Debug.Log("Restore Success.");
} else {
// リストア失敗時の処理を書く
Debug.Log("Restore Failed.");
}
});
}
以上。