我正在写一个精灵套装游戏,我在游戏中购买应用程序。我实现了
在文件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可以从任何对象接收通知吗?如果可以的话,如何实现它。
非常感谢任何人都可以帮我解决这个问题。