我正在编写一个精灵套件游戏,并且我的游戏中有应用内购买。我实施了
文件 IAPHelper.m(IAPHelper.m 是 NSObject 的子类)中的应用购买,如果
购买成功,会发布一个nsnotification,代码如下:
- (void)completeTransaction:(SKPaymentTransaction *)transaction {
NSLog(@"completeTransaction...");
[self provideContentForProductIdentifier:transaction.payment.productIdentifier];
}
- (void)provideContentForProductIdentifier:(NSString *)productIdentifier {
NSLog(@"post a notification");
[[NSNotificationCenter defaultCenter] postNotificationName:IAPHelperProductPurchasedNotification object:productIdentifier userInfo:nil];
}
在 MyScene.m(MyScene.m 是 SKScene 的子类)中,我为通知添加了一个观察者:
-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
/* Setup your scene here */
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ok:) name:IAPHelperProductPurchasedNotification object:nil];
}
return self;
}
- (void)ok:(NSNotification *)notification {
NSLog(@"Ok, I got it");
}
而我想要做的是 IAPHelper.m 发布通知,MyScene.m 接收并响应它。但结果是 MyScene.m 似乎没有收到通知,因此代码
- (void)ok:(NSNotification *)notification {
NSLog(@"Ok, I got it");
}
没有被调用。但是如果我将观察者放在我的 ViewController.m(UIViewController 的子类)中,它就可以工作。我的问题是:skscene 可以接收来自任何对象的通知吗?如果可以,如何实施。
非常感谢,如果有人可以帮助我解决这个问题。