如何在IOS上使用FCM检测卸载



TL;DR

我正在使用FCM检测卸载。如果我在发送通知时收到NotRegistered token,我认为该应用程序已被卸载。

安卓系统的一切都很好,而在IOS上,即使应用程序已经卸载了好几天,我也总是会收到success的响应。

更多信息

我读到,使用APNs feedback Service可以检测卸载,苹果会报告任何不活动的令牌。

此外,我在Firebase上阅读了官方文件:

content_available-在iOS上,使用此字段表示APN负载中可用的内容。当发送通知或消息时,如果设置为true,则会唤醒不活动的客户端应用程序,并且该消息将作为静默通知通过APN发送,而不是通过FCM连接服务器发送。

为了通过APN发送通知,我尝试使用content_available: true发送推送通知,但我无法在IOS上重现NotRegistered token错误。它仍然返回一条success消息。

我使用sendMulticast发送通知。我的有效载荷:

const payload = {
notification: {
title: text,
},
android: {
priority: "high",
ttl: 60 * 60 * 1,
collapseKey: "yo",
notification: {
channel_id: 'YO',
tag: userDoc.id,
},
},
apns: {
payload: {
aps: {
sound: "reminder.caf",
"content-available": 1,
}
},
headers: {
"apns-collapse-id": "yo",
"apns-priority": "10"
}
},
priority: 10
}

我也无法通过HTTP请求重现NotRegistered token响应:

curl -X POST 
https://fcm.googleapis.com/fcm/send 
-H 'authorization: key=server_key_here' 
-H 'content-type: application/json' 
-d '{
"to": "fcm_token_here", 
"priority": "high",
"content_available": true,
"notification": {
"empty": "body"
},
"data": {
"key1": ""
}
}'

底线

1.如何使用FCM检测IOS卸载
2。如果不可能,我如何检测IOS上的卸载

好吧,这取决于您的需求。您的问题的答案是轻微推送而非正常推送。

后台通知是一种远程通知,不会显示警报、播放声音或标记应用程序的图标。它会在后台唤醒你的应用程序,并给它时间从你的服务器启动下载并更新其内容。苹果文档


重要

系统将后台通知视为低优先级:您可以使用它们刷新应用程序的内容,但系统不能保证它们的交付。此外,如果总数过多,系统可能会限制后台通知的发送。系统允许的后台通知数量取决于当前条件,但不要试图每小时发送超过两到三个。

当设备处于"低"时,无声推送通知将不起作用数据模式".

Slient Push Notification Payload示例。

{
"aps" : {
"content-available" : 1
},
"acme1" : "bar",
"acme2" : 42
}

你必须使用"内容可用":1在有效载荷中用于轻微推送

另一方面,如果您的客户端在iOS 12.3或更高版本上运行删除指标

相关内容

  • 没有找到相关文章

最新更新