1

Receigenのドキュメントやその他の情報源では、mainメソッドの早い段階でも、アプリのレシートをできるだけ早く検証することを提案しています。

Receigen で生成されたコードをmainメソッドで呼び出すと、アプリに Receipt がない場合に実行中断が発生します。

int main(int argc, char *argv[])
{

    @autoreleasepool {

       MyPrefix_CheckReceipt( [[MyReceiptRefreshDelegate alloc] init] );

       return UIApplicationMain(argc, argv, nil, NSStringFromClass([XMAppDelegate class]));
    }
}

を呼び出すとreturn UIApplicationMain、Xcode 7.3.1 で次のエラー メッセージが表示されます。

スレッド 1: EXC_BAD_ACCESS (コード = 1、アドレス = 0xe)

この呼び出しをメソッドからアプリのデリゲートのメソッドの先頭に移動するMyPrefix_CheckReceiptmaindidFinishLaunchingWithOptions回避策になります。EXC_BAD_ACCESSレシートが存在しなくてもエラーは発生しません。

ユーザーが Mac または PC 上の iTunes アプリを介してバックアップからアプリを復元するときに、レシートがないことが現場で発生する可能性があります。また、実際のハードウェア iOS デバイスで Xcode を介して初めて実行するとき、またはデバイスからアプリを削除した後に、開発中にレシートがないことが常に発生します。

2 回目の実行では、このようなエラーは発生しません。レシートが偽の「サンドボックス」App Store から正常に取得され、2 回目の実行で表示されることを確認しました。

main質問は次のとおりです。メソッドから検証呼び出しが行われた場合にのみ、Receigen コードがクラッシュしてレシートが見つからないのはなぜですか?

4

0 に答える 0