Как передавать сообщения из одного класса в другой через NSNotification - PullRequest
0 голосов
/ 08 марта 2012

Ха-а-а, я делаю покупку в приложении в моем приложении, мне нужно отключить кнопку, когда покупка контента в приложении проходит успешно, поэтому я добавляю NSuserdefault в свой код, чтобы определить, успешен он или нет,но NSUserDefault работает только тогда, когда я обновляю страницу, я не получил кнопку включенной, когда приходит сообщение об успешном завершении содержимого, я включаю, когда я возвращаюсь на другую страницу и возвращаюсь, мне нужно передать сообщение экземпляра в viewcontroller через уведомление.Мой код

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for(SKPaymentTransaction *transaction in transactions) {
        switch (transaction.transactionState) {

            case SKPaymentTransactionStatePurchasing:
                // Item is still in the process of being purchased
                break;

            case SKPaymentTransactionStatePurchased:
                // Item was successfully purchased!

                // --- UNLOCK FEATURE OR DOWNLOAD CONTENT HERE ---
                // The purchased item ID is accessible via 
                // transaction.payment.productIdentifier

                // After customer has successfully received purchased content,
                // remove the finished transaction from the payment queue.
                [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
                 [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Transsucess"];
                break;

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

                // --- UNLOCK FEATURE OR DOWNLOAD CONTENT HERE ---
                // The purchased item ID is accessible via 
                // transaction.payment.productIdentifier

                // After customer has restored purchased content on this device,
                // remove the finished transaction from the payment queue.
                [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
                break;

            case SKPaymentTransactionStateFailed:
                // Purchase was either cancelled by user or an error occurred.

                if (transaction.error.code != SKErrorPaymentCancelled) {
                    // A transaction error occurred, so notify user.
                [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Transsucess"];
                }
                // Finished transactions should be removed from the payment queue.
                [[SKPaymentQueue defaultQueue] finishTransaction: 

transaction];
                break;
        }
    }
}

в моем контроллере anothervierwcontroller. Я хочу передать значение Уведомления вместо значения Nsuserdefault.Как это сделать. Пожалуйста, помогите мне.

1 Ответ

2 голосов
/ 08 марта 2012

на ваш первый взгляд vieDidLoad добавить строку ..

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ContentPurchased) name:@"Purchased" object:nil];

(удалить наблюдателя в Deloc)

тогда при успешной покупке в вашем коде вопроса .. Разместить уведомление

[[NSNotificationCenter defaultCenter] postNotificationName:@"Purchased"  object:nil userInfo:nil];

Вы можете передать объект .. но я считаю, что вы должны сохранить детали транзакции покупки в NSUserdefautls .., поскольку это потребуется в следующих запусках приложения ..

Когда вы публикуете метод уведомления ContentPurchased вызывается при первом просмотре (вы должны добавить это в контроллере представления)

...