我正在尝试将 GCM v3 集成到 cocos2d-x v3.6 项目中,经过几天使用 CocoaPods 和 Xcode 的工作后,我终于能够构建该应用程序。但是,当部署在设备上进行测试时,它会在调用 [[GGLInstanceID sharedInstance] tokenWithAuthorizedEntity:_gcmSenderID scope:kGGLInstanceIDScopeGCM options:_registrationOptions handler:_registrationHandler]
时崩溃,并出现错误 EXC_BAD_ACCESS
。给了什么?
截图:http://i.imgur.com/s0HnxTp.png
我的配置如下:
daffodilistic$ pod --version 0.39.0.beta.4 daffodilistic$ cat Podfile platform :ios, '8.1' source 'https://github.com/CocoaPods/Specs.git' target 'project-redacted iOS' do pod 'Google/CloudMessaging' end target 'project-redacted Mac' do end
最佳答案
我成功地调试并解决了异常 - 显然,它是由 @property(nonatomic, retain) void (^registrationHandler)
根据 Google's sample GCM v3 code for iOS 声明的 block 属性.至于是 Xcode、iOS 还是 cocos2d-x 导致 block 声明被取消引用/解除分配,我不确定。
解决方案是移动 (^registrationHandler)
block declaration来自
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
到
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
有用但不是很重要的相关 SO 链接:unable to register (com.google.iid error 1005.)
关于ios - EXC_BAD_ACCESS 与 GCM 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32493935/