2017-02-11 182 views
1

我的應用程序目前正在接收文本,圖像以及兩者作爲Firebase控制檯的推送通知。我也想將URL從我的Firebase控制檯發送到應用用戶。單擊通知用戶應重定向到特定網址,即www.facebook.com。如何在以下代碼中執行此操作? Kindly see the image thats what i wantAndroid推送通知網址

Image From firebase notification console

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

    private static final String TAG = "FirebaseMessageService"; 
    Bitmap bitmap; 

    /** 
    * Called when message is received. 
    * 
    * @param remoteMessage Object representing the message received from Firebase Cloud Messaging. 
    */ 
    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     // There are two types of messages data messages and notification messages. Data messages are handled 
     // here in onMessageReceived whether the app is in the foreground or background. Data messages are the type 
     // traditionally used with GCM. Notification messages are only received here in onMessageReceived when the app 
     // is in the foreground. When the app is in the background an automatically generated notification is displayed. 
     // When the user taps on the notification they are returned to the app. Messages containing both notification 
     // and data payloads are treated as notification messages. The Firebase console always sends notification 
     // messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options 
     // 
     Log.d(TAG, "From: " + remoteMessage.getFrom()); 

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

     // Check if message contains a notification payload. 
     if (remoteMessage.getNotification() != null) { 
      Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
     } 

     //The message which i send will have keys named [message, image, AnotherActivity] and corresponding values. 
     //You can change as per the requirement. 

     //message will contain the Push Message 
     String message = remoteMessage.getData().get("message"); 
     //imageUri will contain URL of the image to be displayed with Notification 
     String imageUri = remoteMessage.getData().get("image"); 
     //If the key AnotherActivity has value as True then when the user taps on notification, in the app AnotherActivity will be opened. 
     //If the key AnotherActivity has value as False then when the user taps on notification, in the app MainActivity will be opened. 
     String TrueOrFlase = remoteMessage.getData().get("AnotherActivity"); 

     //To get a Bitmap image from the URL received 
     bitmap = getBitmapfromUrl(imageUri); 

     sendNotification(message, bitmap, TrueOrFlase); 

    } 


    /** 
    * Create and show a simple notification containing the received FCM message. 
    */ 

    private void sendNotification(String messageBody, Bitmap image, String TrueOrFalse) { 
     Intent intent = new Intent(this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     intent.putExtra("AnotherActivity", TrueOrFalse); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
       PendingIntent.FLAG_ONE_SHOT); 

     Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setLargeIcon(image)/*Notification icon image*/ 
       .setSmallIcon(R.drawable.firebase_icon) 
       .setContentTitle(messageBody) 
       .setStyle(new NotificationCompat.BigPictureStyle() 
         .bigPicture(image))/*Notification with Image*/ 
       .setAutoCancel(true) 
       .setSound(defaultSoundUri) 
       .setContentIntent(pendingIntent); 

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

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

    /* 
    *To get a Bitmap image from the URL received 
    * */ 
    public Bitmap getBitmapfromUrl(String imageUrl) { 
     try { 
      URL url = new URL(imageUrl); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
      connection.setDoInput(true); 
      connection.connect(); 
      InputStream input = connection.getInputStream(); 
      Bitmap bitmap = BitmapFactory.decodeStream(input); 
      return bitmap; 

     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      return null; 

     } 
    } 
} 
+0

和要加載的URL –

+0

https://i.stack.imgur.com/Na8ap.png –

+0

就像其他領域使用任何鍵值和檢索您的reciever –

回答

3

這是我在我的應用程序已經實現了推動鏈路數據

public class MyFirebaseMessagingService extends FirebaseMessagingService { 
Bitmap bitmap; 
@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    String message = remoteMessage.getData().get("message"); 
    //imageUri will contain URL of the image to be displayed with Notification 
    String imageUri = remoteMessage.getData().get("image"); 
    String link=remoteMessage.getData().get("link"); 

    //To get a Bitmap image from the URL received 
    bitmap = getBitmapfromUrl(imageUri); 
    sendNotification(message, bitmap,link); 

} 


/** 
* Create and show a simple notification containing the received FCM message. 
*/ 

private void sendNotification(String messageBody, Bitmap image, String link) { 
    Intent intent = new Intent(this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    intent.putExtra("LINK",link); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
      PendingIntent.FLAG_ONE_SHOT); 
    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      .setLargeIcon(image)/*Notification icon image*/ 
      .setSmallIcon(R.drawable.icon) 
      .setContentTitle(messageBody) 
      .setStyle(new NotificationCompat.BigPictureStyle() 
        .bigPicture(image))/*Notification with Image*/ 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 
    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 
} 
public Bitmap getBitmapfromUrl(String imageUrl) { 
    try { 
     URL url = new URL(imageUrl); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap bitmap = BitmapFactory.decodeStream(input); 
     return bitmap; 

    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return null; 

    } 
}} 

的代碼,這是MainActivity在我的WebView或其他瀏覽器中打開鏈接通過意圖降低您的需求。

if (getIntent().getExtras() != null) { 
     if (getIntent().getStringExtra("LINK")!=null) { 
      Intent i=new Intent(this,WebViewActivity.class); 
      i.putExtra("link",getIntent().getStringExtra("LINK")); 
      MainActivity.this.startActivity(i); 
      finish(); 
     }} 

現在WebViewActivity得到鏈接和負載URL中的WebView

WebView webView = (WebView) findViewById(R.id.webView); 
    Intent i = getIntent(); 
    String url = i.getStringExtra("link"); 
    webView.loadUrl(url); 
+0

感謝的人:)它的工作留祝福:) –

+0

@Shubham舒克拉,什麼是BrowserActivity,NewsListActivity?你可以通過僅使用mainactivity和MyFirebaseMessagingService來編輯答案嗎? –

+0

@ChrisHarris我已經編輯了答案,webviewactivity包含的WebView加載URL –