12

我创建了一个应用程序,其中在接收推送通知时编写后台获取代码。我在 .plist 中启用了后台模式,内容可用密钥在推送通知有效负载中设置为 1,注册推送通知并使用委托

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler  

现在,当我的应用程序在后台时,我接到一个电话。在通话期间,我收到了我的应用程序的推送通知。
在通话期间收到推送通知时,不会调用推送通知委托。

4

2 回答 2

0

因此,在下面的电话通话期间处理推送通知/远程通知的方法是:当接到电话时,应用程序变为非活动状态,当电话断开连接时,应用程序变为活动状态,并且 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.
}`

希望这会奏效:)

于 2018-02-02T17:06:20.603 回答
-1

我猜在电话通话期间,蜂窝芯片被用于语音传输。数据传输是芯片要做的额外工作,这可能会极大地影响电池寿命。这是 Apple 做出的一个更有意识的决定,使其在通话期间更像是一种无声通知。

于 2015-09-11T10:44:29.413 回答