【发布时间】:2016-12-08 03:54:48
【问题描述】:
我通过 FCM 实现了推送通知。 当应用程序从我的服务器收到新通知时, 我在 NotificationCompat.Builder 中设置的图标注意到通知面板条,但消息不会预览为弹出窗口。 我尝试设置优先级、样式、类别,但仍未显示通知。 当我滚动时,我可以看到通知。
我在 2 个不同的设备操作系统(6.0.1 和 5.0.1)上试用了该应用 另外我的后端 C# 解决方案 - 两种方法都不会弹出通知 - 消息和通知
清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.theApp"
android:versionCode="31"
android:versionName="0.3.4" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.theApp.SplashScreen"
android:screenOrientation="portrait"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.theApp.MainView"
android:windowSoftInputMode="adjustResize"
android:screenOrientation="portrait"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.NoActionBar" >
</activity>
<service android:name=".FirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".FirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
</application>
</manifest>
FirebaseMessagingService
package com.theApp;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import com.google.firebase.messaging.RemoteMessage;
public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
showNotification(remoteMessage.getData().get("message"));
}
public void showNotification(String message)
{
Intent i =new Intent(this,MainView.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP ); //FLAG_ACTIVITY_CLEAR_TOP
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setDefaults(Notification.DEFAULT_ALL)
.setSmallIcon(R.drawable.ic_launcher)
.setAutoCancel(true)
.setContentTitle("Title")
.setStyle(new NotificationCompat.BigTextStyle()
.bigText(message))
.setContentText(message)
.setTicker(message)
.setVibrate(new long[] { 100, 250, 100, 250, 100, 250 })
.setPriority(NotificationCompat.PRIORITY_MAX)
.setContentIntent(pendingIntent)
.setCategory(NotificationCompat.CATEGORY_PROMO);
NotificationManager manager = (NotificationManager)getApplicationContext().getSystemService(Context.NOTI FICATION_SERVICE);
manager.notify(0,builder.build());
}
}
后端(C#):
// Data message
var contentData = new
{
registration_ids = tokens,
priority = "high",
data = new
{
title = "this is title",
body = "this is body"
}
};
// Notification message
var contentData = new
{
registration_ids = tokens,
priority = "high",
notification = new
{
title = title,
body = message
}
};
【问题讨论】:
-
您如何将消息发送到您的 Android 设备?您使用的是 Firebase 控制台还是 REST API?
-
@ArthurThompson 我通过 rest api 发送
-
@ArthurThompson 即使在 Firebase 控制台上 - 结果相同
-
在使用 REST API 时,您能否将您提出的请求添加到问题中?
-
@ArthurThompson 我添加了我的后端代码,消息和通知的结果相同!
标签: android firebase push-notification firebase-cloud-messaging