Ios 只有在手机打开时才会收到无声通知

Ios 只有在手机打开时才会收到无声通知,ios,swift,apple-push-notifications,healthkit,Ios,Swift,Apple Push Notifications,Healthkit,所以我有一个问题,我想你们可以帮忙解决。我有一个由第三方供应商开发的iOS应用程序。我自己构建了一个api,与应用程序一起使用,使用设备上healthkit数据库中的数据。流程如下: 用户下载、安装并授权应用程序访问healthkit数据。 用户打开应用程序并通过api登录。 应用程序使用用户凭据将healthkit数据发送回api,这样我就可以存储发送的数据并将其归属于用户 一切都很好。现在这个部分不太好用了。我们正在使用FCM发送在的数据对象中具有属性的静默通知 {task:syncnow}

所以我有一个问题,我想你们可以帮忙解决。我有一个由第三方供应商开发的iOS应用程序。我自己构建了一个api,与应用程序一起使用,使用设备上healthkit数据库中的数据。流程如下:

用户下载、安装并授权应用程序访问healthkit数据。 用户打开应用程序并通过api登录。 应用程序使用用户凭据将healthkit数据发送回api,这样我就可以存储发送的数据并将其归属于用户

一切都很好。现在这个部分不太好用了。我们正在使用FCM发送在的数据对象中具有属性的静默通知

{task:syncnow}

当收到此静默通知时,它会检查任务是否为syncnow,如果是,它会将healthkit数据发送到我们的服务器,这样用户就不必记住每天手动同步。问题是,它似乎只有在手机处于唤醒状态且未锁定时才会被接收。如果手机正在使用中,应用程序似乎可以正常唤醒,但如果手机被锁定且屏幕关闭,则不会有任何信息通过。我已经尝试在JSON上向aps对象添加声音,我已经

content\u可用:true

在aps对象中也是如此。所有人都认为,它应该按预期工作,但事实并非如此。FCM也总是将成功发送返回给to对象中用户数组中的所有用户

我的JSON结构如下所示:

{to:[array_of_fcm_tokens],数据:{task:syncnow},aps:{content_available:true,sound:'}}


我还尝试将可用内容移动到对象的顶层,而不是在aps对象中,我尝试了可用内容、可用内容和不同值类型(字符串、int、bool)的不同变体。似乎什么都不管用。我错过了什么?任何帮助都将不胜感激

以下是修复的可能性

1) 在有效负载中添加“内容可用”=1

2) 通过

    func application(_ application: UIApplication,didReceiveRemoteNotification userInfo: [AnyHashable: Any],fetchCompletionHandler completionHandler:@escaping (UIBackgroundFetchResult) -> Void) { 
}
3) 确保“设备设置”中的“应用程序后台刷新”处于启用状态

4) 确保在应用程序中为远程通知添加了后台模式


5) 重新启动设备

所有设备似乎都处于完美的工作状态。我已经确保所有这些都是正确的,而且看起来确实是正确的,但手机在锁定时仍然没有收到无声通知。我几乎什么都试过了,但我无法收到。即使应用程序已关闭,解锁也可以。这是我当前的有效负载,在手机打开时可以正常工作:
[to]=>'',[data]=>Array([task]=>syncnow[next\u sync]=>9:00am)[content\u available]=>1
将可用内容更改为content\u available