1

MainActivity.javaFCM通知,通知时,请单击应用程序在前台后台不

public class MainActivity extends AppCompatActivity { 

    private WebView mWebView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mWebView = (WebView) findViewById(R.id.webview); 

     // Enable Javascript 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     Intent intent = getIntent(); 
     Bundle extras = intent.getExtras(); 

     if(extras != null){ 
      if (extras.containsKey("URL")) { 
       // extract the extra-data in the Notification 
       String url = extras.getString("URL"); 
       mWebView.loadUrl(url); 
      } else { 
       mWebView.loadUrl("http://example.com/"); 
      } 
     } else { 
      mWebView.loadUrl("http://example.com/"); 
     } 

     // Stop local links and redirects from opening in browser instead of WebView 
     mWebView.setWebViewClient(new MyAppWebViewClient()); 
    } 

    @Override 
    public void onBackPressed() { 
     if(mWebView.canGoBack()) { 
      mWebView.goBack(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 
} 

MyFirebaseMessagingService.java

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

    private static final String TAG = "MyFirebaseMsgService"; 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     //Displaying data in log 
     //It is optional 
     Log.d(TAG, "From: " + remoteMessage.getFrom()); 
     Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody()); 

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

    //This method is only generating push notification 
    //It is same as we did in earlier posts 
    private void sendNotification(String messageBody) { 
     Intent intent = new Intent(this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 
       PendingIntent.FLAG_ONE_SHOT); 

     Log.d("BODY", messageBody); 

     Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.mipmap.ic_launcher) 
       .setContentTitle("Firebase Push Notification") 
       .setContentText(messageBody) 
       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     notificationManager.notify(0, notificationBuilder.build()); 
    } 
} 

enter image description here

我的应用程序正在使用的WebView和希望有一些Notification的功能将用户引导至HTTP页面,并使用Firebase云消息传递进行通知。

我正在使用Firebase控制台并使用自定义数据发送通知(请参阅图像1)。

使用上面的代码,当用户点击通知(如果应用程序未打开或在后台)时,我成功地将用户引导至页面,但如果应用程序在前台打开但不起作用。

我相信我应该加上getExtras()extra.getString("URL")之外的东西,除了onCreate的方法,但是我不知道要在哪里添加,比如onResume还是什么?

我不是一名Android开发人员,但我目前有一项任务,即通过通知完成在应用程序内嵌入网站。谢谢!

+0

从哪里发送通知? Firebase控制台或您自己的后端? –

+0

@SudipPodder Firebase控制台 – user259752

回答

0

我找到了解决方案,在MyFirebaseMessagingService.java添加几行代码,并在前台和后台

不知道应用程序工作,这是这样做的

MyFirebaseMessagingService.java的正确方法

import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.media.RingtoneManager; 
import android.net.Uri; 
import android.support.v4.app.NotificationCompat; 
import com.google.firebase.messaging.FirebaseMessagingService; 
import com.google.firebase.messaging.RemoteMessage; 

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     String link = null; 

     if (remoteMessage.getData().containsKey("URL")) { 
      link = remoteMessage.getData().get("URL"); 
     } 

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

    //This method is only generating push notification 
    //It is same as we did in earlier posts 
    private void sendNotification(String messageBody, String link) { 
     Intent intent = new Intent(this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     if (link != null) { 
      intent.putExtra("URL", link); 
     } 

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

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

     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this); 
      notificationBuilder.setSmallIcon(R.mipmap.ic_launcher); 
      notificationBuilder.setContentTitle("THE APP NAME"); 
      notificationBuilder.setContentText(messageBody); 
      notificationBuilder.setAutoCancel(true); 
      notificationBuilder.setSound(defaultSoundUri); 
      notificationBuilder.setContentIntent(pendingIntent); 

     NotificationManager notificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     notificationManager.notify(0, notificationBuilder.build()); 
    } 
} 
相关问题