首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你能为ios设置线程id和FCM通知吗?

你能为ios设置线程id和FCM通知吗?
EN

Stack Overflow用户
提问于 2018-04-11 00:06:08
回答 3查看 3.2K关注 0票数 1

Firebase FCM消息支持tag for Android,这会导致新的通知用具有相同标签的旧通知替换之前的通知。有没有办法对ios做同样的事情?

answer建议在数据有效负载中使用线程id。但它对我不起作用。

EN

回答 3

Stack Overflow用户

发布于 2018-10-11 03:28:51

旧版FCM HTTP服务器协议中没有thread-id FCM有效负载密钥。解决方法是使用iOS通知服务扩展。在FCM数据负载中将分组标识符作为"thread-id“键发送,并让服务扩展读取"thread-id”键并将其设置为通知内容的threadIdentifier属性。

代码语言:javascript
运行
复制
class NotificationService: UNNotificationServiceExtension {
    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        self.contentHandler = contentHandler
        bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
        let userInfo: [AnyHashable : Any] = (bestAttemptContent?.userInfo)!  
        if let apsInfo = userInfo["aps"] as? [AnyHashable: Any], let bestAttemptContent = bestAttemptContent  {                
            //add thread-id to group notification.
            let patientId = userInfo["thread-id"] as! String
            bestAttemptContent.threadIdentifier = patientId
            contentHandler(bestAttemptContent)
        }
    }
}
票数 4
EN

Stack Overflow用户

发布于 2018-04-12 00:44:33

正如我在my answer中提到的,您链接了:

但是,

中目前还没有与thread-id对应的参数。

我提到的变通方法是将thread-id放在数据有效负载中,因为自定义键值对没有经过测试(我没有那么多地涉足iOS,所以可能性很小)。但从逻辑上讲,如果您能够获得数据有效负载的值,则应该能够根据需要使用该值。

遗憾的是,仍然没有任何本机方法来设置iOS有效负载中的thread-id参数。唯一支持的参数是FCM docs中提到的参数。

票数 2
EN

Stack Overflow用户

发布于 2018-06-21 06:18:22

FCM的HTTP线程接口需要支持v1 -id。查看https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages中的APNS字段

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49758268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档