2017-05-25 34 views
10

Patrząc na metody Disconnect() i jest to opis mówi o następujących docsdisconnect() jest przestarzałe: Proszę użyć właściwości shouldEstablishDirectChannel zamiast

Disconnect bieżące połączenie danych FIRMessaging. Spowoduje to przerwanie wszelkich prób połączenia się z FIRMessaging. Wywołanie tego na już rozłączonym kliencie to operacja "no-op".

Ale patrząc na własność shouldEstablishDirectChannel

Gdy ustawione na TAK, Firebase Messaging automatycznie nawiązać gniazda oparte bezpośredni kanał do serwera FCM. Tę funkcję należy włączyć tylko w przypadku wysyłania wiadomości typu "upstream" lub odbierania wiadomości innych niż APNS, wiadomości tylko w aplikacjach na pierwszym planie. Domyślnie NIE.

Wygląda na to, że nie robią dokładnie tego samego, ale mogę się mylić. Czy ktoś może mi to wyjaśnić?

Odpowiedz

10

Więc znalazłem to.

Funkcje disconnect() i connect() nie są już potrzebne. Możesz po prostu zmienić wartość bolde na wartość true i tworzy połączenie.

Uderzyłem moją głową o ścianę, ponieważ to ostrzeżenie o błędzie.

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

do:

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

i to samo dotyczy connect obracając bolean true. odkąd teraz objaśniam tę zmianę, o której powinienem przecież wiedzieć. Testowałem to również na urządzeniu i nadal otrzymuję powiadomienia push.

+7

a co z metodą łączenia z obsługą? –

+0

@Ujajay można uzyskać stan przez wyzwalane powiadomienie, które jest NSNotification.Name.MessagingConnectionStateChanged – khunshan

+0

@Khunshan Nie mam pojęcia, jak to zrobić. Jeśli możesz wyjaśnić szczegóły i powtórzyć jako odpowiedź, będzie bardzo pomocne. –