使用 Firebase 或任何其他方式在 Android 设备上显示通知
Posted
技术标签:
【中文标题】使用 Firebase 或任何其他方式在 Android 设备上显示通知【英文标题】:Display Notification on Android Device using Firebase or any other way 【发布时间】:2016-12-31 23:38:45 【问题描述】:我在 android 中创建了一个论坛应用程序,并使用 phpmyadmin 作为我的数据库。但是当一个问题得到一个新的答案时,应用程序应该向所有用户显示一个通知,所以我该怎么做是需要使用 firebase 还是只使用 web 服务!
【问题讨论】:
【参考方案1】:首先,您需要进入 firebase 控制台并创建一个应用。 (为此,您需要登录您的谷歌帐户)并按照此处提供的步骤操作。 https://firebase.google.com/docs/
完成后,您需要将这些服务添加到您的 Manifest.xml 文件中
<service
android:name=".firebase.FirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name=".firebase.FirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
FirebaseInstanceIdService.class
public class FirebaseInstanceIDService extends FirebaseInstanceIdService
private static final String TAG = "FirebaseInstanceIDService";
@Override
public void onTokenRefresh()
String token = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "OnTokenRefresh callback. Token received : " + token);
FirebaseMessagingService.class
public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService
private static final String TAG = "FirebaseMessagingService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
Log.d(TAG,"onMessageReceived.");
showNotification(remoteMessage.getData().get("message"));
private void showNotification(String message)
Intent i = new Intent(this, HomeActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setAutoCancel(true)
.setContentTitle("Slapr Notification Demo")
.setContentText(message)
.setSmallIcon(R.drawable.common_google_signin_btn_icon_dark)
.setContentIntent(pendingIntent);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(0,builder.build());
现在您可以通过执行以下操作在您的活动中获取 tokenId
Log.d(TAG, "Recieved token : " + FirebaseInstanceId.getInstance().getToken());
这是我开始时发现的最有用的教程。我希望它对你有帮助。 https://www.youtube.com/watch?v=LiKCEa5_Cs8
https://www.youtube.com/watch?v=MYZVhs6T_W8
【讨论】:
我使用了您提供的代码,但它显示 "null" 用于令牌 请从我分享的链接中浏览一遍教程以上是关于使用 Firebase 或任何其他方式在 Android 设备上显示通知的主要内容,如果未能解决你的问题,请参考以下文章
不使用 Firebase 云消息传递或任何其他类似服务的 Android 推送通知
Firebase Authentication FirebaseNetworkException:发生网络错误(如超时、连接中断或无法访问主机)