2017-08-07 9 views
0

デバイスがモバイルデータを使用しているときにプッシュ通知を受信できないようにするにはどうすればよいですか?
ユーザーのトラフィックとお金を節約する必要がありました。
私はこれについて1つの提案があります。 登録BroadcastReceiverが必要です。CONNECTIVITY_CHANGEとなり、WiFiがオフになっている場合はInstanceID.deleteToken()となりますが、この方法についてはわかりません。 おそらく、このようなことをするいくつかの方法がありますか? ありがとうございます!あなたは無線LANを使用して接続が完了したら、https://developers.google.com/instance-id/reference/server#create_a_relation_mapping_for_an_app_instanceデバイスがWiFiのみに接続されている場合のFCMを受信

によって新しいfirebaseトピックを登録することができます

+1

'FirebaseMessaging.getInstance()。unsubscribeFromTopic(" yourTopic ");' –

答えて

1

この:。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();

1

あなたのアプローチ(Wifiがオフになったときに登録を解除し、Wifiがオンになったときに再登録する)によって予期しない動作が発生する可能性があります。あなたが取り組んでいるプロジェクトの性質はよくわかりませんが、ほとんどの場合、影響を受けます。

Wi-Fiがオフになって登録を解除すると、サーバーからデバイスにメッセージがプッシュされます(デバイスは登録されていないためデバイスにはなりません)。その後、Wi-Fiが接続され、新しいトークンを使用すると、以前のメッセージはデバイスに配信されません。これは一般的なメッセージの場合です(たとえば、すべてのデバイスに送信されます)。

また、デバイスの履歴もサーバーで失われます(これはプロジェクトによって異なります)。

Wifiがオフラインになり、セルラーネットワークを制限したい場合(セルラーネットワークがオンであることを意味します)、デバイスがオフラインであることを示すメッセージをサーバーに送信できます。また、サーバーがメッセージを送信したいときは、デバイスのステータスをチェックします。また、Wifiが続行すると、オンラインであるとのメッセージを送信します。

+0

はい、あなたは正しく、デバイスの良いソリューションの登録を解除することができます。おそらく私はプロジェクトの概念を見直し、この "機能" – user2650128

関連する問題