开发者社区> 问答> 正文

uniapp接阿里云移动推送,通知栏没有弹出通知弹窗,也无法做到离线推送

```if (platform == 'android') {
// 注册推送,开始接收数据
aliyunPush.registerPush({}, result => {
const event = result.event;
const channel = uni.requireNativePlugin('Aliyun-Push-NotificationChannel');
// 检查 应用通知通道的总开关
const channelRes = channel.isNotificationEnabled({
id: 'amp_channel'
});
// 先创建NotificationChannel
channel.createChannel({
id: 'amp_channel',
name: '安卓通知通道',
desc: '安卓通知通道',
importance: 3,
});
// 厂商通道
const aliyunThirdPush = uni.requireNativePlugin('Aliyun-ThirdPush');
aliyunThirdPush.registerThirdPush({}, thirdRes => {
const data = JSON.stringify(thirdRes);
androidOperations(data, 1)
})
// 注册日志接口
aliyunThirdPush.registerLog({}, result => {
console.log("third push plugin log : " + result);
})
// 注册推送
if (event === 'registerPush') {
if (result.code === 'success') {
console.log("注册推送 成功 ");
// 获取设备推送ID,注意必须注册推送成功之后,才能获取
const idResult = aliyunPush.getDeviceId();
if (idResult.data.deviceId != '') {
// 存设备ID
console.log(idResult.data.deviceId, '存设备ID');
uni.setStorageSync('registerID', idResult.data.deviceId);
}
} else {
console.log("注册推送 " + result.code + " " + result.msg);
}
}
// 打开通知
else if (event === 'onNotificationOpened') {
// 跳转,具体业务
const res = JSON.stringify(result);
androidOperations(res, 2)
} else {
console.log("receive push data : " + JSON.stringify(result));
// uniapp的消息通知栏提示框
uni.createPushMessage({
title: result.data.title,
content: result.data.content
})
}
});
}



这里是安卓端代码,在emas后台推送信息,前台是能收到推送信息的,但是无法自己创建通知栏通知,只能自己通过uni.createPushMessage来创建,然后推送信息,只能拿到
```{"event":"onNotification","data":{"content":"测试通知内容2","title":"测试通知标题2","extra":{"_ALIYUN_NOTIFICATION_MSG_ID_":"8582154545503232","_ALIYUN_NOTIFICATION_ID_":"595725"}}}

拿不到跳具体页面的路径。求教怎么处理

展开
收起
游客wxjsdm67iizru 2023-11-28 13:33:50 501 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    如果您在使用 UniApp 接入阿里云移动推送时遇到通知栏无弹窗且无法离线推送的问题,可能有以下几个原因:

    1. 权限配置不正确:请确保您已经在应用程序的 AndroidManifest.xml 文件中正确配置了所需的权限,如<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />等。此外,还要确保已经申请了相关的推送权限。

    2. 设备注册问题:在接入阿里云移动推送时,需要确保设备已经成功注册到了阿里云移动推送服务。检查一下设备是否成功获取到了 DeviceToken(设备标识符)并进行了注册。

    3. 推送通道设置不正确:在使用 UniApp 接入阿里云移动推送时,需要根据目标平台的要求设置适当的推送通道。对于 Android 平台,您可以尝试使用小米推送或华为推送作为推送通道。确保已经按照相关文档进行配置,并正确填写了相应的参数。

    4. 通知栏样式配置问题:阿里云移动推送通知栏样式需要进行相应的配置。请检查您的通知栏样式配置是否正确,并且是否与您预期的效果一致。确保您已经设置了合适的标题、内容、图标等。

    2023-11-30 15:46:56
    赞同 展开评论 打赏
  • 当Android设备接收到来自UniApp Aliyun Push的通知时,需要先订阅所需的消息类型,并安装通知插件才能正确地显示通知栏通知。请您安装如下插件:

    • Aliyun-Push-NotificationChannel:提供基本的通知栏通知功能。
    • Aliyun-ThirdPush:提供来自厂商渠道的额外通知功能。
      当接收到消息后,需要将消息内容解析成对象,并传递给相应的通知插件进行展示。
      为了实现离线推送,您可以按照如下方式实现:

    • 在接收到来自Aliyun Push的通知时,将消息内容保存到本地存储器中。

    • 当设备恢复连接后,读取本地存储器中的消息,并使用这些消息构建自定义通知,显示到通知栏上。
    2023-11-28 14:11:54
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载