当前位置: 首页 > 知识库问答 >
问题:

应用程序:didReceiveRemote通知:fetchCompletionHandler未调用

陈昂熙
2023-03-14

当应用程序被强制退出时,似乎不会调用函数application:didReceiveEmotentification:fetchCompletionHandler。我的印象是,无论应用程序处于何种状态,都会调用该函数,但似乎只有在应用程序已经在后台运行时才会调用该函数。如果应用程序尚未使用新的iOS 7远程通知后台模式运行,是否有办法在后台唤醒该应用程序?

共有3个答案

庄瀚玥
2023-03-14

即使应用程序没有运行,也应该启动它。苹果的文档显示:

当此值存在且推送通知到达设备时,系统会将通知发送到你的应用程序(如果需要启动它),并给它一些时间进行处理

当推送通知到达时,系统会向用户显示通知,并在后台启动应用程序(如果需要),以便调用此方法。(UIApplicationLegate协议参考)

与application:didReceiveEmoteNotify:method不同,该方法仅在应用程序运行时调用,系统会调用该方法,而不管应用程序的状态如何。如果你的应用程序被挂起或未运行,系统会唤醒或启动你的应用程序,并在调用该方法之前将其置于后台运行状态。(UIApplicationLegate协议参考)

但是,当使用“内容可用”进行测试时:1推送应用程序在未运行时永远不会启动。当应用程序被暂停时,它就会工作。

韦斯,你找到解决办法了吗?

詹夕
2023-03-14
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {

    //Remote Notification Info
    NSDictionary * remoteNotifiInfo = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];

    //Accept push notification when app is not open
    if (remoteNotifiInfo) {
       [self application:application didReceiveRemoteNotification: remoteNotifiInfo];
    }

    return YES;
}
祁兴运
2023-03-14

application:DidReceiveEmotentification:fetchCompletionHandler:即使应用程序已挂起、根本未运行、处于后台或活动状态,也会被调用。还值得注意的是,该方法仅适用于iOS 7。这是苹果的文档。

但是,如果应用程序被强制关闭(即使用应用程序切换器进行杀戮),应用程序将不会启动。(参见答案)编辑:我在iOS 7.1上再次检查了这个问题,看看他们是否解决了这个问题,但如果应用程序被手动关闭,应用程序将不会被唤醒,并且不会调用application:didReceiveEmotentification:fetchCompletionHandler:

接收推送时,应用程序仅在“需要时”才会被唤醒,以调用应用程序:DidReceiveMemoteNotify:fetchCompletionHandler:方法(即,您必须在推送通知有效负载内设置“内容可用”标志。请参阅答案)。如果用户点击通知打开应用程序,则会再次调用该方法。

编辑:还没有在iOS 8上检查这个。还有其他人吗?

 类似资料:
  • 在应用程序处于活动状态时,调用DidReceiveEmotentification方法,当应用程序处于后台和非活动状态时,不调用DidReceiveEmotentification方法。 代码:- Func应用程序(_应用程序:UIApplication,didReceiveRemote teNotify userInfo:[AnyHasable:任何],fetchCompletionHandle

  • 在通知部分,我有这个通知不打开APP的问题。有什么建议吗?我试了很多可能性,但没有...我错在哪里?请帮帮我。

  • 使用以下代码时: 以下用户行为创建了一种不一致的通知方法: null null

  • 仅当应用程序关闭时,数据有效负载的使用不会收到任何通知,并且不会触发消息接收方法。 在下图中显示数据负载,单击此处查看参数 回复是点击这里查看回复 响应成功1,但在redmi手机中未收到任何通知。

  • 首先,这不是因为应用程序在后台。 通知随数据消息负载一起发送。在游戏控制台中,它表示消息已“确认”,因此它们正在到达设备。对于大多数用户,调用了onMessageReceived方法,但对于少数用户,它不是。为什么会这样? AndroidManifest: MyFirebaseMessagingService:

  • 我使用firebase在iOS中实现推送通知,目标为C。我有方法,根据其描述,当应用程序处于后台且用户点击通知时,以及当应用程序处于前台时,都应该触发该方法。问题是它只能在后台工作(或者当应用程序没有运行时)。我是不是忘了什么?