如何在設備使用移動數據時禁用接收推送通知?
它需要保存用戶的流量和金錢。
我對此有一個建議。 需要註冊BroadcastReceiver
這將跟蹤CONNECTIVITY_CHANGE
如果WiFi關閉呼叫InstanceID.deleteToken()
但我不確定這種方法。 也許有一些方法可以做到這一點? 在此先感謝!當設備僅連接到WiFi時接收FCM
回答
當你帶wifi連接使用,您可以通過https://developers.google.com/instance-id/reference/server#create_a_relation_mapping_for_an_app_instance
註冊新的火力點這個話題。FirebaseMessaging.getInstance()subscribeToTopic( 「新聞」);
而且當您使用移動網絡時: FirebaseMessaging.getInstance()。unsubscribeFromTopic(「news」);
或者,也許你可以使用這個:
Thread thread = new Thread(() -> {
try {
FirebaseInstanceId.getInstance().deleteInstanceId();
} catch (Exception e) {
Log.e("ERROR", Log.getStackTraceString(e));
RxBus.getInstance().post(new OffPushError());
}
});
thread.start();
您的方法(取消Wifi註銷並重新註冊時,Wifi開啓)可能會導致意外的行爲。那麼我不知道你正在進行的項目的性質,但大部分時間它會影響。
假設Wifi關閉,您取消註冊,然後一條消息被服務器推送到設備(您的設備將不會是它們中的一個,因爲它沒有註冊),然後您的Wifi進入並註冊新的令牌,您以前的消息將不會傳送到您的設備。這是一般消息的情況(例如發送給所有設備)。
但是您的設備也會在您的服務器上丟失歷史記錄(同樣,這取決於您的項目)。
一個可能的解決方案可能是:當Wifi下線並且您想要限制蜂窩網絡(意味着蜂窩網絡開啓)時,您可以向您的服務器發送一條消息,指示設備處於脫機狀態。當你的服務器想要發送消息時,它會檢查設備的狀態。當Wifi繼續發送消息說你在線。
是的,您是對的,取消註冊設備不是好的解決方案。大概我應該審查項目的概念,並刪除這個「功能」 – user2650128
- 1. 當連接到WiFi時獲取ios設備的IP地址
- 2. IOS 9當設備連接到wifi時保持TCP連接打開lte
- 3. 設備是否連接到WIFI?
- 4. 連接多個設備到wifi
- 5. 檢測連接到Wifi的Android設備
- 6. 通過WiFi將設備連接到Arduino
- 7. 是否有可能將設備的wifi連接到其他設備的wifi(無線直接連接)
- 8. iOS - 當藍牙設備斷開連接時收到通知
- 9. 使用Socket通過WiFi創建設備到設備的連接
- 10. WIFI_STATE_CHANGED_ACTION意圖在連接到WiFi接入點時未收到?
- 11. 不能識別Wi-Fi設備連接到WiFi接口時的直接對端
- 12. 使用wifi連接兩個Android設備
- 13. 通過WiFi連接Android設備
- 14. iPhone通過Wifi連接設備
- 15. 限制Android設備的WiFi連接
- 16. 連接到Android設備使用WiFi直接沒有提示
- 17. 多播到直接連接的WIFI設備
- 18. 連接到Wifi時獲取Android設備(3G)的IP
- 19. 當沒有連接到Wifi時,應用程序無法加載設備
- 20. 如何查看設備連接的wifi網絡連接速度?
- 21. 使用不具備WiFi-Direct功能的設備連接到WiFi-Direct網絡
- 22. 當條件設置時,Android fcm接收來自mysql的通知
- 23. 通過wifi連接在android設備之間發送和接收數據
- 24. 限制BLE外圍設備僅連接到一個主設備
- 25. 在iOS設備上可以同時使用WiFi連接和3G連接嗎?
- 26. 連接到WPS WiFi
- 27. 製作wifi連接設備,用於擴展wifi網絡
- 28. ADB wifi在無法連接帶有喚醒鎖定的設備中時無法連接(僅限CPU)?
- 29. 當藍牙設備自動配對/由系統連接時,Android接收回撥?
- 30. 通過wifi直接連接10多個設備?
您可以使用廣播接收器來確定網絡類型並使用FirebaseMessaging.getInstance()取消註冊。unsubscribeFromTopic(「yourTopic」);' –