我一直在尝试实现获取完成块而没有运气。每当我发送一个APN时,xcode仍然会抱怨它没有实现。这是我的代码
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
println("2. User Data", userInfo)
completionHandler(UIBackgroundFetchResult.NewData)
}
我在xcode控制台中收到的警告就是这个
Warning: Application delegate received call to -application:didReceiveRemoteNotification:fetchCompletionHandler: but the completion handler was never called.
不确定我是否在这里实施正确的语法
答案 0 :(得分:8)
删除println或将其更改为NSLog,然后重试。最有可能是问题是由于此方法在后台而不是在主线程上发生的。 println比NSLog简单得多,NSLog是线程安全的,并且经过多年和多年的强化。
答案 1 :(得分:1)
我有一个完全相同的问题但是完全不同的解决方案。我的问题是我导入了Intercom
,因此人们可以在应用内聊天,看起来它拦截了通知,didReceiveRemoteNotification
从未在AppDelegate
中调用过。
我终于可以不停地撞到墙上,希望这可以节省一些人的时间。
答案 2 :(得分:0)
不确定原因,但用println
替换NSLog
解决了这个问题。