我已经集成了 Twilio Programmable Chat,但是我遇到了一些我正在尝试解决的推送通知问题。
我正在查看我的代码与https://www.twilio.com/docs/chat/ios/push-notifications-ios提供的示例
我注意到的第一件事是在User Notification Setttings
节中(除了节名称中的额外 t 之外),使用[self.chatClient registerWithToken:nil];
了 V1.0 中不推荐使用的方法。在 V 2.2.2 的当前文档中,我们有- (void)registerWithNotificationToken:(nonnull NSData *)token completion:(nullable TCHCompletion)completion,它指定nonnull NSData*
了 token 参数。所以,我们不能再通过 nil 了。我们现在应该为我们的应用委托中的if(notificationSettings.types == UIUserNotificationTypeNone)
案例做些什么吗?- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
(上面提到的教程部分提供的示例)现在我只是跳过这一步,并确保我的updatedPushToken
属性设置为 nil。
我也想知道- (void)handleNotification:(nonnull NSDictionary *)notification completion:(nullable TCHCompletion)completion方法TwilioChatClient
实际上做了什么。我看到委托有 5 种不同的通知方法。此handleNotification
方法是否只是调用适当的委托方法?我自己没有使用这种方法,我现在只是显示一个带有通知消息的警报视图,所以我想知道是否有我错过的其他好处,甚至潜在的错误我'我通过不使用TwilioChatClient
处理程序来介绍。
我想知道的最后一个也是最重要的事情,在本教程中没有涉及,是如何在用户退出并稍后重新登录时处理注册推送通知。deviceToken
返回 from是否- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
意味着存储在比单身财产更持久的地方?我可以通过 Twilio 或我不知道的 iOS 方法在其他地方重新获得它吗?似乎一旦我将用户注销,当他们登录到不同甚至相同的用户时,我就无法再次收到通知。我看到有一个deregisterWithNotificationToken:completion:方法,但由于它需要一个非空令牌,如果我的应用程序尚未关闭,我只能根据教程调用它。保留此令牌的推荐方法是什么?NSUserDefaults?我服务器数据库的某个地方?
编辑:实际上,我还有另一个问题。如果我取消选中已读状态框,然后在聊天实例配置中重新选中它,这会重置每个人的未读频道数吗?我的消费水平/阅读状态的设置不正确,而且我还有很多对用户隐藏的频道,即使它们在其中......所以,启用徽章计数后,用户可能会看到非常高的数字他们收到一条消息的时间,并且即使他们打开了他们当前可以查看的每个频道,也无法将此数字完全减少到 0。我宁愿重设这个数字。正如我在评论中提到的,我不喜欢我唯一的选择是没有通知徽章,或者通知徽章明确设置为具有未读消息的频道数量...... 我最喜欢只增加徽章的选项,除此之外,通知不包含特定数字。我希望人们看到他们有聊天,因为这非常重要,但我不希望显示这些高数字,并且这些未读消息不会永久保持相关性。只有新的未读消息是相关的。