firebase云消息传递不接收通知或数据消息

时间:2017-01-13 21:57:26

标签: java android firebase firebase-cloud-messaging

  

我正在使用firebase从其他客户端发送数据消息,但是我   我没有收到任何通知。我也尝试发送通知   来自firebase控制台的消息但是app是否无响应   前景或背景状态。我尝试了几乎所有的解决方案   关于FCM的stackoverflow但似乎没有任何效果。

我们将不胜感激任何帮助!

这是我的 build.gradle

    dependencies {
    compile 'com.google.firebase:firebase-core:10.0.1'
    compile 'com.google.firebase:firebase-ads:10.0.1'
    compile 'com.google.firebase:firebase-messaging:10.0.1'
    compile 'com.google.firebase:firebase-invites:10.0.1'
}
apply plugin: 'com.google.gms.google-services'

build.gradle(项目级别)

  dependencies {
    classpath 'com.android.tools.build:gradle:2.2.3'
    classpath 'com.google.gms:google-services:3.0.0'
}

MyFirebaseMessagingService.java

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");
    String market = remoteMessage.getData().get("market");
    String external = remoteMessage.getData().get("external");
    Log.d("error", link + "    " + market + "    " + message + "   " + imageUri);

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

}


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

private void sendNotification(String messageBody, Bitmap image, String link, String market, String external) {
    Intent intent = new Intent(this, NavigationActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("LINK", link);
    intent.putExtra("MARKET", market);
    intent.putExtra("EXTERNAL", external);
    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.appiconmobile)
            .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;

    }
}

}

MyFirebaseInstanceIdService.java

public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";

@Override
public void onTokenRefresh() {
    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();

     sendRegistrationToServer(refreshedToken);
}


private void sendRegistrationToServer(String token) {
    // TODO: Implement this method to send token to your app server.
}

}

这是我通过Advanced Rest客户端发送的json数据

{ "data": {
    "image": "https://ibin.co/2t1lLdpfS06F.png",
    "message": "Firebase Push Message Using API"
    "link": "http://www.google.com"
  },
  "to" : "/topics/shopbrowser"
}

MainActivity.java

.....
    subscribeToPushService();
....


  private void subscribeToPushService() {
    FirebaseMessaging.getInstance().subscribeToTopic("shopbrowser");


    String token = FirebaseInstanceId.getInstance().getToken();

}

0 个答案:

没有答案