FCM HTTP v1 API深度链接配置:Legacy API迁移后的实现疑问
FCM HTTP v1 API 实现后台通知点击触发深度链接的正确配置
在从Legacy FCM迁移到v1 API后,后台状态下点击通知触发深度链接的逻辑需要同时配置消息请求体和Android客户端Manifest,不能直接将深度链接赋值给click_action,具体步骤如下:
一、消息请求体配置
v1 API中,需要在android节点下同时配置notification.click_action(自定义Action)和data(存储深度链接),示例请求体片段:
{ "message": { "token": "YOUR_DEVICE_FCM_TOKEN", "notification": { "title": "测试通知", "body": "点击打开深度链接" }, "android": { "notification": { "click_action": "ACTION_OPEN_DEEP_LINK", // 自定义Action,需与Manifest对应 "channel_id": "your_notification_channel_id" }, "data": { "deep_link_uri": "your_app://detail/123" // 实际深度链接地址 } } } }
二、AndroidManifest.xml 配置
在处理深度链接的Activity中,添加匹配上述自定义Action的<intent-filter>,同时配置深度链接本身的过滤规则(可选,确保直接打开链接也能生效):
<activity android:name=".ui.DeepLinkActivity" android:exported="true"> <!-- 响应FCM通知点击的Action --> <intent-filter> <action android:name="ACTION_OPEN_DEEP_LINK" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <!-- 处理深度链接的标准过滤规则 --> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="your_app" android:host="detail" android:pathPattern="/.*" /> </intent-filter> </activity>
三、Activity中处理链接逻辑
在目标Activity的onCreate或onNewIntent方法中,从Intent extras中读取data字段里的深度链接,执行跳转:
class DeepLinkActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 从FCM数据中获取深度链接 intent.extras?.getString("deep_link_uri")?.let { uri -> // 跳转到对应页面,比如用导航组件 val navIntent = Intent(Intent.ACTION_VIEW, Uri.parse(uri)) startActivity(navIntent) } finish() // 处理完成后关闭当前Activity } }
关键注意事项
click_action必须是Manifest中注册的自定义Action字符串,不能直接填深度链接,这是v1 API和Legacy API的核心区别之一。- Android 12及以上版本,目标Activity必须设置
android:exported="true",否则FCM无法触发该Activity。 - 应用处于后台或杀死状态时,FCM会直接启动
click_action对应的Activity,深度链接数据会通过Intent extras传递。
内容的提问来源于stack exchange,提问作者Tristian
相关产品推荐
相关产品推荐

