uni-app FCM离线推送正常能收到消息但点击消息无法打开app
uni-app FCM离线推送正常能收到消息但点击消息无法打开app
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | Windows10 64位操作系统 | HBuilderX |
示例代码:
uni push2.0 配置了FCM 离线推送正常 能收到消息 但是点击消息无法打开app
操作步骤:
推送相关权限都打开了 谷歌三件套也有 正常收离线通知 但是无法唤起app
预期结果:
正常唤起app
实际结果:
不能打开app
bug描述:
uni push2.0 配置了FCM 离线推送正常 能收到消息 但是点击消息无法打开app
6 回复
麻烦各位大佬帮忙看看
官方就没人看一下吗
uni-push1.0也遇到了,官方能看下这个问题吗
您好,我现在对接后,FCM的离线消息都收不到,ios以及国内其他厂商的都可以,请问您FCM对接的时候有啥特别注意的点吗?
在处理uni-app FCM(Firebase Cloud Messaging)离线推送时,如果消息能够正常收到但点击消息无法打开应用,通常是由于推送消息中的点击行为(click_action)配置不正确或未配置相应的AndroidManifest.xml和iOS配置文件。以下是一个针对Android和iOS平台的具体解决方案示例,包括必要的代码配置。
Android平台
- 确保在
AndroidManifest.xml
中配置了正确的Activity和Intent Filter:
<activity
android:name=".YourMainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- FCM Click Action -->
<intent-filter>
<action android:name="YOUR_PACKAGE_NAME.FCM_CLICK_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
其中YOUR_PACKAGE_NAME.FCM_CLICK_ACTION
需要与你在FCM服务器发送消息时设置的click_action
一致。
- 在发送FCM消息时设置正确的
click_action
:
{
"to": "YOUR_DEVICE_TOKEN",
"notification": {
"title": "Hello",
"body": "World",
"click_action": "YOUR_PACKAGE_NAME.FCM_CLICK_ACTION"
},
"data": {
"key1": "value1"
}
}
iOS平台
- 确保在
AppDelegate.m
中处理了UNUserNotificationCenterDelegate:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
if (application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground) {
// Handle notification when app is in background or inactive
NSString *clickAction = userInfo[@"gcm.notification.click_action"];
if ([clickAction isEqualToString:@"YOUR_IOS_CLICK_ACTION"]) {
// Open specific view controller
}
}
completionHandler(UIBackgroundFetchResultNewData);
}
注意:iOS没有像在Android中那样直接设置click_action
的字段,但你可以通过检查userInfo
字典中的自定义键来识别点击动作。
- 在发送FCM消息时,可以通过
apns
字段添加自定义数据:
{
"to": "YOUR_DEVICE_TOKEN",
"notification": {
"title": "Hello",
"body": "World"
},
"apns": {
"payload": {
"aps": {
"content-available": 1
},
"custom_key": "custom_value",
"click_action": "YOUR_IOS_CLICK_ACTION" // 虽然iOS不直接识别,但可用于应用内逻辑处理
},
"headers": {
"apns-priority": "10"
}
}
}
通过上述配置,确保在Android和iOS平台上点击FCM推送消息时能够正确打开应用或导航到指定页面。