2017-10-09 109 views
0

我有兩個設備。一個是運行API 26,另一個是API 21.我正在使用Google的firebase進行通知。除非我先打開應用程序,否則API 26設備不會收到推送通知。然後它收到一切正常。我不必先打開應用程序以接收API 27設備上的推送通知。任何想法,即使不打開應用程序,如何始終接受推送?我希望只需打開手機即可通知用戶。在android中關閉應用程序時不會顯示推送通知

private void sendNotification(String title, String messageBody, String clickAction) { 

    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    String id = ""; 
    if (Build.VERSION.SDK_INT >= 26) { 
     id = "my_channel_01"; 
     // The user-visible name of the channel. 
     CharSequence name = "myChannel"; 
     // The user-visible description of the channel. 
     String description = ""; 
     int importance = NotificationManager.IMPORTANCE_HIGH; 
     NotificationChannel mChannel = new NotificationChannel(id, name,importance); 
     // Configure the notification channel. 
     mChannel.setDescription(description); 
     mChannel.enableLights(true); 
     // Sets the notification light color for notifications posted to this 
     // channel, if the device supports this feature. 
     mChannel.setLightColor(Color.RED); 
     mChannel.enableVibration(true); 
     mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); 
     notificationManager.createNotificationChannel(mChannel); 
    } 


    Intent intent = new Intent(this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
      PendingIntent.FLAG_ONE_SHOT); 

    String channelId = getString(R.string.default_notification_channel_id); 
    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder notificationBuilder = 
      new NotificationCompat.Builder(this, id) 
        .setSmallIcon(R.mipmap.ic_launcher) 
        .setContentTitle(title) 
        .setContentText(messageBody) 
        .setAutoCancel(true) 
        .setSound(defaultSoundUri) 
        .setContentIntent(pendingIntent); 


    notificationManager.notify(1 /* ID of notification */, notificationBuilder.build()); 


} 
+0

你是如何從firebase發送通知的?它來自控制檯還是API? – zihadrizkyef

+0

我使用api發送郵件請求 – RobOhRob

回答

0

添加BootBroadcastReceiver清單文件

<receiver 
      android:name=".OnBootBroadcastReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      </intent-filter> 
</receiver> 

創建下列Java文件。在其中調用FirebaseMessagingReceiveService。

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class OnBootBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent i = new Intent("com.demo.FirebaseMessagingReceiveService"); 
     i.setClass(context, FirebaseMessagingReceiveService.class); 
     context.startService(i); 
    } 
} 
+0

Hello Genius。謝謝!不確定爲什麼這不包含在任何有關FireBase消息的教程中。 – RobOhRob

相關問題