首页 > 解决方案 > Twilio Chat SDK iOS,通知徽章不适用于应用

问题描述

在此处输入图像描述

我已将 Twilio Chat SDK 用于我的 iOS 应用程序。将新消息添加到频道时的通知很好。但它不会更新应用程序的通知徽章计数。我附上了 Twilio Portal 中推送通知配置的屏幕截图。

另外,当我要求用户授权通知时,

选项集是:

  let options: UNAuthorizationOptions = [.badge, .sound, .alert]

标签: iosswifttwiliotwilio-programmable-chat

解决方案


您的通知负载应如下所示以更新应用徽章计数:

{
    "aps" : {
        "alert" : "You got notificaiton.",
        "badge" : 5
    }
}

收到此有效负载后,徽章计数将更新为 5。

更新:如 Twilio文档中所述:

要更新应用程序图标上的徽章计数,您应该将徽章计数从聊天客户端委托传递给应用程序:

func chatClient(_ client: TwilioChatClient, notificationUpdatedBadgeCount badgeCount: UInt) {
    UIApplication.shared.applicationIconBadgeNumber = Int(badgeCount)
}

注意:但是,这仅在应用程序处于活动状态时有效。要在应用程序处于非活动状态时更新徽章计数,您需要通过自定义 Twilio 服务器将通知负载配置为上述格式,默认配置不允许这样做。

当应用处于非活动状态时,您可以使用此方法附加徽章计数:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    if UIApplication.shared.applicationState != .active {
        UIApplication.shared.applicationIconBadgeNumber += 1
    }
}

推荐阅读