iOS NSNotificationCenter_应用启动注册通知

今天为了解决旧项目藕合度,感觉用前辈是用代理传值,感觉不太合理,因为两个对象本身一点关系都没有,就是想监听内购成功有回调而已。于是乎,就采用通知,但是在通知使用时,碰到坑,后面再细讲。

一、注册通知

//增加监听者
 [[NSNotificationCenter defaultCenter] addObserver:[GDSDKAppsFlyerManager sharedStanderManager] selector:@selector(noticeFromConsoleGameIAP:) name:@"GDIAPStander" object:nil];

//监听到通知时,做相应的动作
-(void)noticeFromNetworkGameIAP:(NSNotification*)info{

}

//取消通知
-(void)dealloc{
   [[NSNotificationCenter defaultCenter] removeObserver:self name:@"GDIAPStander" object:nil];
}

二、发送通知

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

三、坑

众所周知,通知是先增加 监听者 才能进行处理通知发送的相应用事件。于是在应用启动(application didFinishLaunchingWith-Options:)时,就已经注册通知,并且已经发送通知,但是并不实现监听通知的方法(noticeFromNetworkGameIAP:),直觉告诉我,一定是线程问题,于是将注册通知 delay 0.25s,果然可以。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [[NSNotificationCenter defaultCenter] addObserver:[GDSDKAppsFlyerManager sharedStanderManager] selector:@selector(noticeFromNetworkGameIAP:) name:@"GDIAPNetwork" object:nil];//GDIAPNetwork
    });
    return YES;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 应用程序必须进行适当配置,才可以接受本地或远程通知。配置过程在iOS和OS X略有不同,但基本原理是相同的。在启动...
    shenzhenboy阅读 1,499评论 1 2
  • 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知...
    莫离_焱阅读 6,769评论 1 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,073评论 19 139
  • 自认为自己从来不是一个精通人际交往方面的人,可能在某些方面还过于固执和天真,甚至对于他人的精于“算计”的行为,人...
    莹小牙阅读 1,408评论 0 0
  • 逗儿姐的名片: 性别:(外表)女; 职业:靠码字混饭吃的职场小秘书; 特点:二逼、傻逼+逗逼。 标签:女神、女屌丝...
    逗儿姐逗阅读 390评论 0 0

友情链接更多精彩内容