2016-09-20 33 views
0

多分私は間違ったステップをやっています。 I 3つの活動があります。私のMainActivityのonCreateFirebaseInstanceIdService.onTokenRefresh()が呼び出されないのはなぜですか?

  • ランチャー
  • ログイン
  • MainActivity

を、私はサービスを呼び出しています:

void iniciarServicioSendTokenFCM(){ 

     servicioFCM= new Intent(this, IDService.class); 
     startService(servicioFCM); 

    } 

そして、これが実行されますサービスのonCreateに入るため、onTokenRefresh()は決して実行されませんテッド。

私はこれらを行っていますsteps。私はアンインストールして、アプリケーションを再インストールしたが動作しませんでした。

public class IDService extends FirebaseInstanceIdService { 

    private ConnectionStatusSync ConnSync;//= new ConnectionStatusSync(this); 
    private DispositivoSync Sync; 
    private Integer dispositivoId; 
    private PreferenceUtil preferenceUtil ; 
    private String tokenDispositivo; 
    private DispositivoSync.OnFragmentInteractionListener listener; 
    public IDService() { 

    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Listener(); 
     ConnSync = new ConnectionStatusSync(this); 
     Sync = new DispositivoSync(this); 
     preferenceUtil= new PreferenceUtil(this); 

     dispositivoId=preferenceUtil.getInt(getString(R.string.dispositivoID),0,null); 
     dispositivoId=(dispositivoId==0?null:dispositivoId); 
     tokenDispositivo= new IDUtil(this).getId(); 


    } 

    private void Listener(){ 
     listener = new DispositivoSync.OnFragmentInteractionListener() { 
      @Override 
      public void onFinished(boolean terminoBien, int dispositivoID) { 
       if(terminoBien){ 
        preferenceUtil.savePreference(getString(R.string.dispositivoID),dispositivoID,null); 

       } 
      } 
     }; 
    } 

    @Override 
    public void onTokenRefresh() { 
     // Get updated InstanceID token. 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
     preferenceUtil.savePreference(getString(R.string.TokenFCM),refreshedToken,null); 
     //Log.d(TAG, "Refreshed token: " + refreshedToken); 

     // TODO: Implement this method to send any registration to your app's servers. 
     if(validaciones()) 
     sendRegistrationToServer(refreshedToken); 
    } 

    private boolean validaciones(){ 

     return dispositivoId!=null && MainActivity.mOperador!=null; 
    } 

    private void sendRegistrationToServer(final String token){ 



     final Thread registrar = new Thread(new Runnable() { 
      @Override 
      public void run() { 
Sync.EnviarDispositivo(MainActivity.mOperador.getOperadorIdServidor(),dispositivoId,token,tokenDispositivo,listener); 
      } 
     }); 

     Thread hilo = new Thread(new Runnable() { 
      @Override 
      public void run() { 

       Command commandNull= new Command() { 
        @Override 
        public void execute() { 

        } 
       }; 

       ConnSync.CheckConnection(registrar,commandNull); 

      } 
     }); 

     hilo.start(); 

    } 



} 

答えて

0

Firebase Cloud Messagingを使用するアプリでは、アプリが起動するとすぐにクライアントがトークンの生成を開始します。

ほとんどの場合、最初のトークンは、onTokenRefresh()のリッスンを開始するまでに生成されている可能性があります。私は容易であることを考えると、途中で共有環境設定でトークンを格納するのに非常に便利であるとは思わない

sendRegistrationToServer(FirebaseInstanceId.getInstance().getToken()); 

:だから、あなたもすぐに要求し、あなたのiniciarServicioSendTokenFCM方法でトークンを保存したいと思いますFirebaseInstanceId.getInstance().getToken()からアクセスできます。

関連する問題