0

**私がしたいのは、通知として緯度と経度を渡し、それをクリックして、その場所でAndroidのGoogleマップを開くことです。私は多くの記事を読んだが、URLなどの座標を渡してアプリケーションに渡す必要がある場合、私はそれを理解できませんでした。アクティビティ**(FCM)プッシュ通知からAndroidアクティビティにLatitudeとLongtitudeを渡す方法

私のプッシュ通知があるときにアクティビティ(SomeActivity)を開くにはクリックして(CLICK_ACTIONを使用するために)、私はPostmanを使用します。

{ 
    "to": 
    "/topics/NEWS" 
    , 
    "data": { 
    "extra_information": "TestProject" 
    }, 
    "notification": { 
    "title": "NEW INCIDENT", 
    "text": "Opening Google Maps", 
    "click_action": "SOMEACTIVITY" 
    } 
} 

Javaファイルは次のとおりです。

package com...; 

import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v7.app.AppCompatActivity; 

/** 
* Created by User on 2/23/2017. 
*/ 


public class SomeActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.some_activity_layout); 
     Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?daddr=" + "40.589352" + "," + "23.030262")); 
     startActivity(intent); 
    } 
} 

あなたの助けいただければ幸いですし、間違いなく私の一日になります!

答えて

1

notificationではなく、dataのプロパティとしてlat/lngを送信すると、Googleマップを開いて場所にマーカーを表示できます。たとえば:そして、あなたはMapFragmentを使用してGoogleマップを表示し、独自の活動を書いた場合は

public class MessagingService extends FirebaseMessagingService { 
    private static final String TAG = "MessagingService"; 

    @Override 
    public void onMessageReceived(RemoteMessage msg) { 
     super.onMessageReceived(msg); 

     Map<String, String> msgData = msg.getData(); 
     Log.i(TAG, "onMessageReceived: " + msgData); 

     if (msgData != null) { 
      postNotification(msgData.get("title"), msgData.get("lat"), msgData.get("lng")); 
     } 
    } 

    private void postNotification(String title, String lat, String lng) { 
     Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
       Uri.parse("http://maps.google.com/maps?q=loc:" + lat + "," + lng)); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

     PendingIntent pendIntent = PendingIntent.getActivity(this, 0, intent, 
       PendingIntent.FLAG_UPDATE_CURRENT); 

     NotificationCompat.Builder builder = 
       new NotificationCompat.Builder(this) 
         .setCategory(NotificationCompat.CATEGORY_STATUS) 
         .setContentInfo(lat + '/' + lng) 
         .setContentIntent(pendIntent) 
         .setContentTitle(title) 
         .setSmallIcon(R.mipmap.ic_launcher); 

     NotificationManager mgr = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     mgr.notify(1, builder.build()); 
    } 
} 

{ 
    "to": 
    "/topics/NEWS" 
    , 
    "data": { 
    "title": "NEW INCIDENT", 
    "lat": "37.8726483", 
    "lng": "-122.2580119" 
    } 
} 

すると、メッセージサービスでは、データを取得し、通知を自分で生成しますthis answerで説明されているようにclick_actionを使用して呼び出すことができます。

+0

**ありがとうございました!!! ** Bob Snyder –

関連する問題