Android 通过推送消息打开 App 的实现方式

作为一名刚入行的小白,了解如何通过推送消息打开 Android 应用是非常重要的。推送通知可以显著增强用户体验,并为应用带来更多的活跃用户。本文将一步一步地教你如何实现这一功能,帮助你在 Android 开发的旅程中迈出坚实的一步。

流程概述

在实现“Android 通过推送消息打开 App”功能时,可以将整个流程分为以下几个步骤:

步骤 描述
1 创建 Firebase 项目
2 配置 Android 项目
3 集成 Firebase Messaging
4 实现自定义通知消息处理
5 测试与调试

详细实现步骤

步骤 1:创建 Firebase 项目

  • 登录 [Firebase 控制台](
  • 创建一个新的项目,并记下项目 ID。

步骤 2:配置 Android 项目

  1. 在你的 Android 项目中,添加 Firebase 依赖项。打开 build.gradle (Module: app) 文件,添加以下代码:

    // 添加 Firebase 依赖
    implementation 'com.google.firebase:firebase-messaging:23.0.5'
    

    上述代码引入了 Firebase Messaging 功能。

  2. build.gradle (Project) 文件中,确保你已经添加了 Google 的服务:

    // 添加 Google 服务插件
    classpath 'com.google.gms:google-services:4.3.10'
    
  3. AndroidManifest.xml 中,添加 Firebase 服务和权限:

    <manifest xmlns:android="
        package="com.example.app">
    
        <application>
            <service
                android:name=".MyFirebaseMessagingService"
                android:exported="false">
                <intent-filter>
                    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
                </intent-filter>
            </service>
        </application>
    
        <!-- 网络权限 -->
        <uses-permission android:name="android.permission.INTERNET"/>
    </manifest>
    

MyFirebaseMessagingService 是我们自定义的服务,用于接收消息。

步骤 3:集成 Firebase Messaging

  1. 创建一个新的服务 MyFirebaseMessagingService 来处理接收到的消息:

    package com.example.app;
    
    import com.google.firebase.messaging.FirebaseMessagingService;
    import com.google.firebase.messaging.RemoteMessage;
    import android.app.NotificationChannel;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Intent;
    import android.os.Build;
    import androidx.core.app.NotificationCompat;
    
    public class MyFirebaseMessagingService extends FirebaseMessagingService {
    
        @Override
        public void onMessageReceived(RemoteMessage remoteMessage) {
            // 处理接收到的消息
            String title = remoteMessage.getNotification().getTitle();
            String body = remoteMessage.getNotification().getBody();
            sendNotification(title, body);
        }
    
        private void sendNotification(String title, String messageBody) {
            Intent intent = new Intent(this, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
    
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "channel_id")
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle(title)
                    .setContentText(messageBody)
                    .setAutoCancel(true)
                    .setContentIntent(pendingIntent);
    
            NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    
            // 在 Android Oreo 及以上版本必须创建 NotificationChannel
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                NotificationChannel channel = new NotificationChannel("channel_id", "Channel human readable title", NotificationManager.IMPORTANCE_DEFAULT);
                notificationManager.createNotificationChannel(channel);
            }
    
            notificationManager.notify(0, notificationBuilder.build());
        }
    }
    
  • onMessageReceived 方法用于处理接收到的推送通知。
  • sendNotification 方法用于显示通知。

步骤 4:实现自定义通知消息处理

如上所述,我们已经在 MyFirebaseMessagingService 中实现了自定义通知处理。你可以根据需求对通知的内容及样式进一步定制。

步骤 5:测试与调试

  1. 使用 Firebase 控制台发送测试通知,确保应用能够收到推送消息。
  2. 确认点击通知能成功打开 MainActivity

甘特图

以下是整个实施流程的甘特图,展示了不同步骤的时间安排:

gantt
    title Android Push Notification Implementation Plan
    dateFormat  YYYY-MM-DD
    section Firebase Project Setup
    Create Firebase Project           :a1, 2023-10-01, 1d
    section Android Project Configuration
    Add Firebase Dependencies         :a2, 2023-10-02, 1d
    Update AndroidManifest.xml       :after a2  , 1d
    section Firebase Messaging Integration
    Create Messaging Service          :a3, 2023-10-04, 2d
    Implement Notification Handling    :after a3  , 2d
    section Testing and Debugging
    Send Test Notification            :after a3  , 1d

类图

下面是应用中涉及的类图,展示了各个类之间的关系:

classDiagram
    class MyFirebaseMessagingService {
        +void onMessageReceived(RemoteMessage remoteMessage)
        +void sendNotification(String title, String messageBody)
    }

    class RemoteMessage {
        +Notification getNotification()
    }

    class Notification {
        +String getTitle()
        +String getBody()
    }

    MyFirebaseMessagingService --> RemoteMessage
    RemoteMessage --> Notification

总结

通过本文,我们逐步实现了在 Android 应用中利用 Firebase 进行推送通知的功能。首先创建 Firebase 项目,然后在 Android 项目中配置必备参数,接着集成 Firebase Messaging,最后进行调试。如果你能熟练掌握这几个步骤,将为你未来的 Android 开发打下坚实的基础。

希望这篇文章对你有所帮助,期待你在 Android 开发的旅程中不断成长!如有疑问,欢迎留言讨论。