美文网首页
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