问题 不推荐使用disconnect():请改用shouldEstablishDirectChannel属性


在查看disconnect()方法及其描述时,它会在文档中说明以下内容

断开当前的FIRMessaging数据连接。这将停止任何连接到FIRMessaging的尝试。在已断开连接的客户端上调用此操作是无操作。

但是看看shouldEstablishDirectChannel属性

设置为YES时,Firebase Messaging将自动建立到FCM服务器的基于套接字的直接通道。如果要在预置应用中发送上游消息或接收非APNS,仅数据消息,则只需启用此功能。默认为NO。

看起来他们并没有做同样的事情,但我可能错了。谁能为我澄清一下这个?


8840
2018-05-25 08:46


起源



答案:


所以我发现的是这个。

不再需要disconnect()和connect()函数。您可以将bolean变为true,然后进行连接。

我正在把头靠在墙上,因为如果那个错误警告了。

func applicationDidEnterBackground(_ application: UIApplication) {
        Messaging.messaging().disconnect()
        print("Disconnected from FCM.")
    }

至:

        func applicationDidEnterBackground(_ application: UIApplication) {
        Messaging.messaging().shouldEstablishDirectChannel = false
        print("Disconnected from FCM.")
    }

通过将bolean变为true,连接也是如此。因为现在有解释这种变化的地方,我应该更加努力。我还在一台设备上对此进行了测试,我仍在收到推送通知。


14
2018-05-30 12:54



和处理程序的连接方法怎么样? - Sujay U N
@SujayUN你可以通过触发通知获取状态,即NSNotification.Name.MessagingConnectionStateChanged - khunshan
@Khunshan我不知道怎么做。如果你能详细解释并重播作为答案,将会非常有帮助。 - Sujay U N


答案:


所以我发现的是这个。

不再需要disconnect()和connect()函数。您可以将bolean变为true,然后进行连接。

我正在把头靠在墙上,因为如果那个错误警告了。

func applicationDidEnterBackground(_ application: UIApplication) {
        Messaging.messaging().disconnect()
        print("Disconnected from FCM.")
    }

至:

        func applicationDidEnterBackground(_ application: UIApplication) {
        Messaging.messaging().shouldEstablishDirectChannel = false
        print("Disconnected from FCM.")
    }

通过将bolean变为true,连接也是如此。因为现在有解释这种变化的地方,我应该更加努力。我还在一台设备上对此进行了测试,我仍在收到推送通知。


14
2018-05-30 12:54



和处理程序的连接方法怎么样? - Sujay U N
@SujayUN你可以通过触发通知获取状态,即NSNotification.Name.MessagingConnectionStateChanged - khunshan
@Khunshan我不知道怎么做。如果你能详细解释并重播作为答案,将会非常有帮助。 - Sujay U N