美文网首页
iOS开发后台接收到通知 不执行(void)applicatio

iOS开发后台接收到通知 不执行(void)applicatio

作者: MangoJ | 来源:发表于2023-10-27 14:06 被阅读0次

如果在后台接收到通知时不执行 application:didReceiveRemoteNotification:fetchCompletionHandler: 方法,有一些常见的原因和解决方法:

  1. 通知有效负载中的 content-available 标志:首先,请确保您的远程通知的有效负载(payload)中包含了 content-available 标志,并将其设置为1,以提示系统在后台唤醒应用程序。

    示例:

    {
        "aps": {
            "content-available": 1,
            // 其他通知内容
        }
    }
    
  2. 通知委托注册:确保您已正确设置通知委托并请求了通知权限,如下所示:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        [center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError *error) {
            if (granted) {
                [application registerForRemoteNotifications];
            }
        }];
        return YES;
    }
    
  3. 后台刷新模式:确保您的应用程序设置了后台刷新模式,并且已获得了后台刷新权限。后台刷新模式是在 Xcode 项目设置中启用的。它允许您的应用程序在后台执行操作,包括接收通知。

  4. 应用程序状态application:didReceiveRemoteNotification:fetchCompletionHandler: 方法通常在应用程序在后台时被调用。如果应用程序在前台运行,该方法不会被调用,因为通知内容通常在前台处理。确保您的应用程序处于后台运行状态或被挂起时接收通知。

  5. 不同 iOS 版本的行为:不同版本的 iOS 可能会对通知的处理方式有不同的限制和行为。确保您的代码与目标 iOS 版本兼容。

友盟测试推送时配置"content-available": 1,

image.png

相关文章

网友评论

      本文标题:iOS开发后台接收到通知 不执行(void)applicatio

      本文链接:https://www.haomeiwen.com/subject/obauidtx.html