使用 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 推送通知

使用其他API进行Firebase身份验证

获取 Firebase 通知列表?

使用 Firebase 的 Swiftui 中未显示数据

Firebase Authentication FirebaseNetworkException:发生网络错误(如超时、连接中断或无法访问主机)

使用 java 脚本或任何其他方式从 safari“浏览器”检查应用程序是不是已安装在 iOS 上。