- デバイスがインターネットに接続されていない場合、onTokenRefresh()は呼び出されず、デバイスがインターネットに接続されていないことをユーザーに通知する必要があります
- firebase には独自のネットワーク変更リスナーがあり、インターネットに接続されたデバイスがトークンを取得して返そうとすると、この時点でローカル ブロードキャスト レシーバーに登録トークンを受信したことを知らせることで、主なアクティビティを伝えることができます。
以下のコードを使用します。
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d("FCN TOKEN GET", "Refreshed token: " + refreshedToken);
final Intent intent = new Intent("tokenReceiver");
// You can also include some extra data.
final LocalBroadcastManager broadcastManager = LocalBroadcastManager.getInstance(this);
intent.putExtra("token",refreshedToken);
broadcastManager.sendBroadcast(intent);
}
あなたの主な活動で:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
LocalBroadcastManager.getInstance(this).registerReceiver(tokenReceiver,
new IntentFilter("tokenReceiver"));
}
BroadcastReceiver tokenReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String token = intent.getStringExtra("token");
if(token != null)
{
//send token to your server or what you want to do
}
}
};
}