iOS Swift Twilio 可编程聊天推送通知

Posted

技术标签:

【中文标题】iOS Swift Twilio 可编程聊天推送通知【英文标题】:iOS Swift Twilio Programmable Chat Push Notifications 【发布时间】:2017-01-25 23:44:05 【问题描述】:

使用 TwilioChatClient pod,我已成功将我的应用程序注册到 Twilio Programmable Chat 以接收 APN 通知。

但是,据我所知,这些通知是在实例化的 TwilioChatClient 客户端上调用 client.register(withToken: deviceToken) 后创建的,而不是通过应用程序的 AppDelegate didReceiveRemoteNotification 方法创建的。更奇怪的是,didReceiveRemoteNotification 被调用,但仅在应用程序处于活动状态而不是后台状态时,我想执行一些操作。

有谁知道这些通知是在哪里以及如何创建的,或者为什么didReceiveRemoteNotification 只在活动状态下被调用?除其他外,我想随着客户端发出的每个通知增加应用程序图标徽章编号。

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) 
    print("Registered for notifications");
    if UserUtils.client?.userInfo != nil 
        print("Has info");
        UserUtils.deviceToken = deviceToken;
        UserUtils.client?.register(withToken: deviceToken)
     else 
        print("No info");
        updatedPushToken = deviceToken as NSData?
    


func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) 
    print("Received a notification");
    if UIApplication.shared.applicationState != .active 
        print(userInfo);
        UserUtils.client?.handleNotification(userInfo);
        UIApplication.shared.applicationIconBadgeNumber += 1;
        if UserUtils.client?.userInfo != nil 
            print(userInfo);
            let jsonNotification = JSON(userInfo["aps"])
            let alert = jsonNotification["alert"].stringValue + "\"";
            print(JSON.init(parseJSON: alert)["body"]);
         else 
            print(userInfo);
            let jsonNotification = JSON(userInfo["aps"])
            let alert = jsonNotification["alert"].stringValue + "\"";
            print(JSON.init(parseJSON: alert)["body"]);
        
     else 
    

client.register(withToken: deviceToken) 按预期工作。

【问题讨论】:

请添加您的代码sn-ps 您使用哪种didReceiveRemoteNotification 方法?你在用这个application(_:didReceiveRemoteNotification:fetchCompletionHandler:)? @muescha,我正在使用包含 fetchCompletionHandler 的方法 - 但我已经尝试了这两种方法,但它们都不适合我。我现在将发布我的代码 sn-ps! 您还看到文档中的最后一段吗?也许这就是为什么? @muescha,您指的是哪个文档?可以给我链接吗? 【参考方案1】:

这里是 Twilio 开发者宣传员。

我与 Programmable Chat 团队交谈过,这是我发现的:

application(_:didReceiveRemoteNotification:fetchCompletionHandler:) 用于仅执行后台处理的后台静默通知(即,在 APNS 通知中设置了"content-available": 1)。可编程聊天向用户发送显示信息的通知,因此不会在后台模式下触发 不过,通知可以为您更新徽章计数,所以这是您不必执行的处理,这需要在通知中进行不同的设置,我们目前不支持,但是现在正在努力添加该支持 如果您想同时显示通知并进行进一步的后台处理,常规通知不支持此功能,但 ios 10 的service extensions 支持此功能。可编程聊天也不支持这些,但同样,它正在开发中,所以你很快就会看到

请留意Programmable Chat Changelog 以了解这些新增内容。

让我知道这是否有帮助。

【讨论】:

以上是关于iOS Swift Twilio 可编程聊天推送通知的主要内容,如果未能解决你的问题,请参考以下文章

不接收 Twilio 聊天推送通知(Ionic 和 Firebase)

iOS Swift 从推送通知以编程方式导航到某些 ViewController

Twilio 可编程聊天 — 使应用程序徽章与未读消息计数保持同步

注册 iOS Twilio Voice Client 时出现推送通知错误

如何以编程方式从 iOS Swift 3 中的 XIB 推送和呈现给 UIViewController

当应用程序在前台时收到 Twilio 通知警报