0

Googleのチュートリアルで述べたようにFirebaseコンソールを完全に作成してセットアップしました。私は私のプロジェクトでもサービスを実装しています。私がFirebaseコンソールからメッセージを送信している間、それは私のアプリで受信していません。単一のデバイスを使用して送信しようとすると、「登録されていない登録トークン」が表示されます。ここでAndroid - Firebaseプッシュ通知が機能しない

は私MyFirebaseInstanceIDServiceです:ここでは

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { 

    @Override 
    public void onTokenRefresh() { 

     //Getting registration token 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
     System.out.println("TOKEN::" + refreshedToken); 
     //Displaying token on logcat 

     SmartApplication.REF_SMART_APPLICATION.writeSharedPreferences("regId", refreshedToken); 
//  SharedPreferences pref = getApplicationContext().getSharedPreferences(Config.SHARED_PREF, 0); 
//  SharedPreferences.Editor editor = pref.edit(); 
//  editor.putString("regId", refreshedToken); 
//  editor.commit(); 
    } 
} 

は私MyFirebaseMessagingServiceです:

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

    private static final String TAG = "MyFirebaseMsgService"; 
    private static int count = 0; 
    String TYPE = "type"; 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     //Displaying data in log 
     //It is optional 
     System.out.println("data getting"); 
     Log.d(TAG, "Notification Message TITLE: " + remoteMessage.getNotification().getTitle()); 
     Log.d(TAG, "Notification Message BODY: " + remoteMessage.getNotification().getBody()); 
     Log.d(TAG, "Notification Message DATA: " + remoteMessage.getData().toString()); 

     //Calling method to generate notification 
     //remoteMessage.getNotification().getBody() 
     sendNotification(remoteMessage.getNotification().getTitle(), 
       remoteMessage.getNotification().getBody(), remoteMessage.getData()); 
    } 


    //This method is only generating push notification 
    //It is same as we did in earlier posts 
    private void sendNotification(String messageTitle, String messageBody, Map<String, String> row) { 
     PendingIntent contentIntent = null; 
     try { 
      Intent groupDetailIntent = new Intent(this, UnanimousHomeActivity.class); 

      contentIntent = PendingIntent.getActivity(this, (int) (Math.random() * 100), 
        groupDetailIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentTitle(messageTitle) 
       .setContentText(messageBody) 
       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .setContentIntent(contentIntent); 

     NotificationManager notificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(count, notificationBuilder.build()); 
     count++; 
    } 
} 

私は4日以来stuckedている、誰かがここで見つかりませ論理的な問題として私を助けてください、いくつかの珍しいもの統合プッシュ中に起こっている。マニフェストで

+0

にサービスを追加し、Googleのコンソールからのテストプッシュを送信する必要がありますそうでない場合は、リンク - > https://console.firebase.google.com をクリックして、プロジェクトを選択します。あなたのプロジェクトを選択した後、ナビゲーションドロワーリストの左側にある通知をクリックし、テストプッシュリンクを送信してください。 テストプッシュの送信中にデバイスがバックグラウンドになっているか閉じています。 – yash786

+0

ツール - > Firebase - > Cloud Messaging Itあなたが不足している引数を見つけるのを助けることができます –

+0

これらすべて私が試みたが、まだ成功しません。 –

答えて

0
public class MyFirebaseMessagingService extends FirebaseMessagingService { 

    private static final String TAG = MyFirebaseMessagingService.class.getSimpleName(); 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     Log.e(TAG, "From: " + remoteMessage.getFrom()); 


     // Check if message contains a data payload. 
     if (remoteMessage.getData().size() > 0) { 
      Log.e(TAG, "Message data: " + remoteMessage.getData().toString()); 



     } 

     if (remoteMessage.getNotification() != null) { 
      Log.e(TAG, "Message data: " + remoteMessage.getData().toString()); 
      sendnotification(remoteMessage.getNotification().getBody()); 



     } 
    } 

    private void sendnotification(String body) { 

     Intent intent = new Intent(this,MainActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

     PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT); 

     Uri notificationsound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentTitle("Emoji Keyboard") 
       .setDefaults(-1) 
       .setContentText(body) 
       .setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 }) 
       .setSound(notificationsound) 
       .setAutoCancel(true) 
       .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(0,notificationBuilder.build()); 
    } 


} 

と、この後、この追加:あなたがあなたのサーバーに正しくそれを送ってきたことを確認して、トークンを得ることに成功した後

<!-- Firebase Notifications --> 
     <service android:name=".services.MyFirebaseMessagingService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
      </intent-filter> 
     </service> 

     <service android:name=".services.MyFirebaseInstanceIDService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> 
      </intent-filter> 
     </service> 
     <!-- ./Firebase Notifications --> 
0

を。

は無効な登録トークンのためのrecommended actionをお試しください:

サーバーに渡す登録トークンの形式を確認してください。クライアントアプリケーションがFirebase通知の登録から受け取る登録トークンと一致することを確認してください。文字を切り捨てたり、追加したりしないでください。

詳細については、documentationを参照してください。

0

コードが自分のアプリケーションで正常に動作している

firebaseから作成されたアプリのフォルダにgoogleservices-JSONファイルを追加し、 行く前にマニフェスト

<service 
      android:name=".MyFirebaseMessagingService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
      </intent-filter> 
     </service> 
     <service 
      android:name=".MyFirebaseInstanceIDService"> 
      <intent-filter> 
       <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
      </intent-filter> 
     </service> 
関連する問題