私は Inappurchase 製品を自動再生可能にする必要があるアプリケーションを作成しています。このために、Apple の文書を読んだ後、自動再生可能な製品のすべてのトランザクションの後、私たちのアプリは購入ごとにトランザクションの領収書を受け取り、必要ですトランザクション領収書アプリがそのトランザクション日付を保存する必要があることを確認した後、Apple サーバーからの領収書を確認します。しかし、製品を購入した後、Apple クラス - 検証コントローラーを介して Apple サーバーからトランザクションの領収書を確認しようとすると、アプリが完了ハンドラーでクラッシュし、完了ハンドラー NIL が表示されます。
私の _completionHandlers は、実行がこれらのメソッドのいずれかに達すると解放されます。この問題を解決するために私を導いてください
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// So we got some receipt data. Now does it all check out?
BOOL isOk = [self doesTransactionInfoMatchReceipt:responseString];
VerifyCompletionHandler completionHandler = _completionHandlers[[NSValue valueWithNonretainedObject:connection]];
NSValue *key = [NSValue valueWithNonretainedObject:connection];
NSLog(@"%@",_completionHandlers);
[_completionHandlers removeObjectForKey:key];
if (isOk)
{
//Validation suceeded. Unlock content here.
NSLog(@"Validation successful");
completionHandler(TRUE);
} else {
NSLog(@"Validation failed");
completionHandler(FALSE);
}
}