2017-12-18 201 views
1

我想要在通知發出後顯示activity而不點擊通知Activity必須打開。我正在使用FCM進行通知發送。如何在沒有點擊通知的情況下顯示活動

如何在不點擊通知的情況下打開Activity

我使用這一點,但它不會打開活動:

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

private static final String TAG = "MyFirebaseMsgService"; 
String messageContent = ""; 

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 

    // TODO(developer): Handle FCM messages here. 
    messageContent = remoteMessage.getData().get("message"); 
    showNotification(remoteMessage.getData().get("message")); 
    postToastMessage(remoteMessage.getData().get("message")); 
    Log.d(TAG, "From: " + remoteMessage.getFrom()); 


} 

public void postToastMessage(final String message) { 
    Handler handler = new Handler(Looper.getMainLooper()); 

    handler.post(new Runnable() { 

     @Override 
     public void run() { 
      Toast.makeText(getApplicationContext(), message +" received", Toast.LENGTH_LONG).show(); 

      Intent newIntent = new Intent(MyFirebaseMessagingService.this, CallActivity.class); 
      newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(newIntent); 

     } 
    }); 
} 

private void showNotification(String message) { 

    Intent i = new Intent(this, CallActivity.class); 
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingIntent = PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT); 


    NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(this) 
      .setAutoCancel(true) 
      .setContentTitle(" Test") 
      .setContentText(message) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setContentIntent(pendingIntent); 

    NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

    manager.notify(0,builder.build()); 
} 
} 

我收到此錯誤

FA: Discarding data. Failed to send event to service 
+0

而且你要接受'onTokenRefresh()'什麼樣的通知? –

+0

onTokenRefresh()如果你知道任何其他請告訴我,它僅由firebase給出 – Lassie

+0

。我將更改 – Lassie

回答

-1

請在你的代碼延伸AppComatActivity和所有其他活動延伸BaseActivity基地活動,在節目通知內廣播你的意圖與新的活動,並在基地活動接收器,在該接收器內,你可以打開你的活動

更多象我可以顯示如何爲這個代碼,

感謝

0

試試這個, 可能是有幫助的你,

添加在onMessageReceived()這段代碼方法,

在NotificationActivity.class

if (getIntent().getBooleanExtra("isNotification", false)) { 
     message = getIntent().getStringExtra("message"); 
     txt_message.setText(message); 
    } 

我簡單的GET消息3210

添加此,

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 


    Log.e(TAG, "From: " + remoteMessage.getFrom()); 
    Log.e(TAG, "onMessage receiveddd: " + remoteMessage.getData()); 
    // Log.e(TAG, "onMessage notification: " + remoteMessage.getNotification().getBody()); 

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

     Map<String, String> data = remoteMessage.getData(); 
     String deviceID = data.get("DeviceID"); 
     String message = data.get("Message"); 



     Log.e("value11111111", deviceID); 
     Log.e("value222222222", message); 


     Intent intent = new Intent(MyFirebaseMessagingService.this, NotificationActivity.class); 
     intent.putExtra("isNotification", true); 
     // intent.putExtra("title", value1); 
     intent.putExtra("message", message); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 

     // sendNotification("message received"); 

    } 
} 

比郵差, 發送該請求

{ 
"data":{ 
"DeviceID":"",// pass here your DeviceID 
"Message":"hiiii" // pass here your message 
}, 
"to":""// pass here ypur tocken 
    } 
+0

我添加了但登錄該messageReceiver也沒有顯示.......... – Lassie

+0

通知顯示但不顯示活動...... – Lassie

+0

是onMessageReceived()方法調用嗎?把日誌放在onMessageReceived(),Log.d(「onMessage notification:」,remoteMessage.getNotification()。getBody()); –

相關問題