0

MKStoreKitを使用してIAPをアプリケーションに実装しています。製品を購入すると、すべてが期待どおりに実行され、エラーメッセージはまったく表示されません。製品は以下のコードを使用して購入されます。

 [[MKStoreManager sharedManager] buyFeature:@"pro_upgrade" 
                                onComplete:^(NSString* purchasedFeature)
 {
     NSLog(@"Purchased: %@", purchasedFeature);
     // provide your product to the user here.
     // if it's a subscription, allow user to use now.
     // remembering this purchase is taken care of by MKStoreKit.
 }
                               onCancelled:^
 {
     // User cancels the transaction, you can log this using any analytics software like Flurry.
 }];

製品を購入した後、購入を確認する通知を(以下のコードを介して)受け取ります。

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector (subscriptionPurchased:) 
                                             name: kSubscriptionsPurchasedNotification 
                                           object:nil];

購入後、次のコードを実行して(文書化されているように)、製品が購入されたかどうかを判断します。

if([MKStoreManager isFeaturePurchased:@"pro_upgrade"]) {
    NSLog(@"This feature is purchased.");
} else {
    NSLog(@"This feature is not purchased");
}

製品IDに対して常にNOを返します。これは、製品を購入したときと同じインスタンスでアプリを実行し、アプリを閉じて開いたときに発生します。開発証明書または配布証明書を使用してアプリを実行しても、まったく違いはありません。さらに、MKStoreKitが購入したBOOLを探しているように見える場所を正確に見つけることができません(コードのかなり深いところにあるので、そうであるかどうかはわかりませんが、見つけることができません) 。私のアプリはNSUserDefaultsを使用して他の情報を保存しているので、それは問題ではありません。

あなたが提供できるどんな助けもあなたの時間をありがとう、非常に高く評価されます。

4

1 に答える 1

0

MKStoreKit は NSUserDefaults に保存されません。代わりにキーチェーンを使用します。メソッド storeData:forKey: にブレークポイントを配置し (このメソッド名をコードを見ずに頭から直接書き、同様の名前のメソッドを検索します)、それをデバッグしてみます。これは私があなたの購入を保存する場所です.

アプリを削除して再インストールした後でも、購入は記憶されていることに注意してください。

于 2012-03-20T15:26:15.697 に答える