このコードは Phonegap Code: IAP Plugin からのものです。「送信されたjs」の直後のコード行でエラーが発生します。関数に送信されるすべての要素は、最後の 'nil' を除いて非 nil です。ログアウトして、送信されたことを確認しました。このコードはプラグイン ( https://github.com/usmart/InAppPurchaseManager-EXAMPLE ) からそのまま出てきたもので、ロギング以外は変更されていません。デバッガーでは、どのオブジェクトも nil ではないことがわかったので、エラーが発生する理由がわかりません。
エラーは次のとおりです。
[__NSArrayI JSONRepresentation]: 認識されないセレクターがインスタンス 0xdc542d0 に送信されました 2013-02-13 23:26:17.209 GoblinSlots[4519:707] *キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: '-[__NSArrayI JSONRepresentation]: 認識されないセレクターが送信されましたインスタンス 0xdc542d0' へ
コードは次のとおりです。
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse: (SKProductsResponse *)response
{
NSLog(@"got iap product response");
for (SKProduct *product in response.products) {
NSLog(@"sending js for %@", product.productIdentifier);
NSLog(@" title %@", product.localizedTitle );
NSLog(@" desc%@ - %@", product.localizedDescription, product.localizedPrice );
NSArray *callbackArgs = [NSArray arrayWithObjects:
NILABLE(product.productIdentifier),
NILABLE(product.localizedTitle),
NILABLE(product.localizedDescription),
NILABLE(product.localizedPrice),
nil ];
NSLog(@"sent js");
NSString *js = [NSString stringWithFormat:@"%@.apply(plugins.inAppPurchaseManager, %@)", successCallback, [callbackArgs JSONSerialize]];
NSLog(@"js: %@", js);
[command writeJavascript: js];
}