App Purchaseで機能していますが、支払いが成功した後にUIButtonイメージを変更する際に問題があります

私はアプリを購入して正常に動作しています。これは私がInAppPurchaseObserver.mに持っているものです:

case SKPaymentTransactionStatePurchased:
           //Item was successfully purchased!

            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isProUpgradePurchased" ];
            [[NSUserDefaults standardUserDefaults] synchronize];

            [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
            break;

case SKPaymentTransactionStateRestored:
           //Verified that user has already paid for this item.
           //Ideal for restoring item across all devices of this customer.

            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isProUpgradePurchased" ];
            [[NSUserDefaults standardUserDefaults] synchronize];

            [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
            break;

私のViewControllerではこれをやっています:

if([[NSUserDefaults standardUserDefaults] boolForKey:@"isProUpgradePurchased"]) {

  [energeeButton setImage:[UIImage imageNamed:@"thumb_unlocked_off.png"] forState:UIControlStateNormal];

} 

これはアプリを再起動するとすぐに機能しますが、アプリの購入が完了した直後にボタン画像を変更したいと思います。

これをどうやって起こさせるのですか?

ありがとう!

ベストアンサー

その値が変更されたときに、その特定のイメージをリロードできるように、ビューコントローラにソートの通知を送信する必要があります

[[NSNotificationCenter defaultCenter] postNotificationName:@"DZCustomNotification" object:nil];
// put this right after you change the user defaults




// put this in the initializer of your viewcontroller
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(purchasedChanged:) name:@"DZCustomNotification" object:nil];

// create this instance method in your viewcontroller class

- (void)purchasedChanged:(NSNotification *)notif {
    if([[NSUserDefaults standardUserDefaults] boolForKey:@"isProUpgradePurchased"]) {

        [energeeButton setImage:[UIImage imageNamed:@"thumb_unlocked_off.png"] forState:UIControlStateNormal];

    }
}

いこうぜ!

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です