You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Trusted Web Activity(TWA)应用添加推送通知

TWA应用添加推送通知的两种方案解决方案

我来帮你解决TWA应用添加推送通知的问题,针对你提到的两个方案分别梳理:

一、Web Push方案:让Chrome自动打开TWA而非网站

你担心的Chrome识别问题,核心在于网站与TWA的绑定关系——只要你在创建TWA时正确配置了Digital Asset Links,Chrome就能关联到你的应用:

  • 原理:Digital Asset Links会在你的网站和TWA应用之间建立可信关联,当Web Push通知到达时,Chrome会检查设备上是否已安装关联的TWA应用。如果已安装,就会直接唤起应用;如果未安装,才会打开网站。
  • 验证与配置:确保你的网站根目录下存在.well-known/assetlinks.json文件,且内容正确关联了TWA的包名和签名指纹;同时TWA的AndroidManifest.xml中也配置了对应的asset_statements meta-data。
  • 实现步骤:按照标准Web Push流程在你的网站上实现Service Worker注册、推送订阅逻辑,后端发送通知时,Chrome会自动完成路由,无需额外修改TWA代码。

二、Android Push方案:解决TWA无Activity的问题

TWA项目并非真的没有Activity,只是默认使用了库自带的TwaLauncherActivity,你可以通过自定义Activity来集成Android推送(比如FCM):

  1. 创建自定义Activity
    在你的Android项目中新建一个Activity类,继承自com.google.androidbrowserhelper.trusted.TwaLauncherActivity:

    public class CustomTwaActivity extends TwaLauncherActivity {
        private static final String TAG = "CustomTwaActivity";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // 在这里添加推送初始化代码,比如FCM的初始化
            FirebaseMessaging.getInstance().getToken()
                .addOnCompleteListener(task -> {
                    if (!task.isSuccessful()) {
                        Log.w(TAG, "Fetching FCM registration token failed", task.getException());
                        return;
                    }
                    // 获取到token后可以发送到后端保存
                    String token = task.getResult();
                    Log.d(TAG, "FCM Registration Token: " + token);
                });
        }
    }
    
  2. 修改AndroidManifest.xml
    将原来的启动Activity替换为你自定义的Activity,并确保保留TWA所需的配置:

    <activity
        android:name=".CustomTwaActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <!-- TWA核心配置 -->
        <meta-data
            android:name="android.support.customtabs.trusted.DEFAULT_URL"
            android:value="https://你的网站地址" />
    </activity>
    
  3. 集成FCM推送

    • 添加FCM依赖到项目的build.gradle文件中;
    • 下载并配置google-services.json文件;
    • 创建FirebaseMessagingService子类,处理推送消息的接收与展示:
      public class MyFirebaseMessagingService extends FirebaseMessagingService {
          @Override
          public void onMessageReceived(RemoteMessage remoteMessage) {
              // 构建并展示自定义通知
              NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "TWA_PUSH_CHANNEL")
                  .setSmallIcon(R.drawable.ic_notification)
                  .setContentTitle(remoteMessage.getNotification().getTitle())
                  .setContentText(remoteMessage.getNotification().getBody())
                  .setPriority(NotificationCompat.PRIORITY_HIGH)
                  .setAutoCancel(true);
      
              NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
              notificationManager.notify(1001, builder.build());
          }
      }
      

方案选择建议

  • 如果希望一次实现同时支持网站和TWA,优先选Web Push,无需额外Android代码开发;
  • 如果需要深度集成Android系统推送能力(比如自定义通知样式、后台消息处理、离线推送等),则选择Android Push方案。

内容的提问来源于stack exchange,提问作者Mehdi Azizi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:48:53