通话期间未调用远程通知回调
Posted
技术标签:
【中文标题】通话期间未调用远程通知回调【英文标题】:Remote Notification callback not being called during phone call 【发布时间】:2015-08-05 07:32:47 【问题描述】:我创建了一个应用程序,其中在接收推送通知时编写后台获取代码。我在 .plist 中启用了后台模式,内容可用键在推送通知有效负载中设置为 1,注册推送通知并使用委托
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
现在,当我的应用处于后台时,我接到了一个电话。 在通话期间,我收到了我的应用程序的推送通知。在通话期间收到推送通知时,推送通知委托没有被调用。
【问题讨论】:
你注册推送通知了吗 @Bhavin 我已注册推送通知。 是的,委托没有被调用 你真的在电话中收到通知吗?你怎么知道的?有another question here,也有类似的问题。 @BarisAkar Banner 在推送通知到达时显示。 【参考方案1】:所以在下面的电话过程中处理推送通知/远程通知的方法是: 当接到电话时,应用程序变为非活动状态,当电话断开时,应用程序变为活动状态,并调用 AppDelegate 中的方法“applicationDidBecomeActive”。因此,您可以在 applicationDidBecomeActive 中的 didReceiveRemoteNotification 方法中回调远程通知.
即使您可以在应用终止时处理推送通知。 例如在特定的 viewController 上移动,didFinishLaunchingWithOptions 包含字典,其中包含应用程序终止并收到推送通知时通知的有效负载。这可以作为 . `。
if (launchOptions != nil)
// opened from a push notification when the app is closed
NSDictionary* userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (userInfo != nil)
else
// opened app without a push notification.
`
希望这会奏效:)
【讨论】:
【参考方案2】:我猜在通话过程中,蜂窝芯片被用于语音传输。数据传输是芯片要做的额外工作,这可能会极大地影响电池寿命。这是 Apple 做出的一个更明智的决定,使其在通话期间更像是一种无声通知。
【讨论】:
以上是关于通话期间未调用远程通知回调的主要内容,如果未能解决你的问题,请参考以下文章