更新记录
1.6(2025-09-25)
1、修复iOS点击通知栏冷启动时,无法监听到消息的问题。
1.5(2025-08-11)
1、初始化时fallbackToSettings设置默认值为false
1.4(2025-08-11)
1、去掉interface.uts中systemConfig配置,修改初始化方法,将appId作为初始化方法的参数传递进去。
查看更多平台兼容性
uni-app(4.21)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | √ | - | - | √ | - | 4.4 | √ | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - |
hy-oneSignal
开发文档
UTS 语法 UTS API插件 UTS uni-app兼容模式组件 UTS 标准模式组件 Hello UTS
纯国外服务推送平台,基于oneSignal封装的UTS插件,支持iOS、Android,可自定义推送渠道(HUAWEI、FCM等)
使用说明
原SDK叫做OneSignal,官网是OneSignal,使用前需在官方注册账号并创建应用,可参考开发文档(非常详细)。 推送可以在OneSignal官网上dashboard进行推送,也可以通过RestApi进行推送,推送功能丰富。如果集成使用时遇到问题,可以参考最下方【常见问题】部分
-
推送。 (1) Dashboard后台推送,类似极光、个推,可自定义各种参数 (2)利用Postman RestApi推送
-
查看订阅。查看成功集成并初始化的设备,方便检测集成中的问题
-
查看推送历史。可以查看送达数、CTR等信息
这是一款OneSignal的uts插件,用于uniapp在iOS和Android端集成推送功能,且完全是使用纯海外服务。 目前暴露以下几个api,如有业务需要可定制增加其他api。
//初始化
export declare function initOSPush(appId: string) : void
//设置消息监听
export declare function addListener(notiCallback : HYNotificationCallback) : void
//登录,设置externalId
export declare function login(externalId : string) : void
//退出登录,清空alias
export declare function logout() : void
//设置alias
export declare function setAlias(alias_label : string, value : string) : void
/使用说明:/
一、头文件导入
import * as OSPush from '@/uni_modules/hy-oneSignal'
二、方法调用
在App.vue或其他合适的地方(根据业务需求)中完成登录,并设置别名alias以及收到推送的监听方法
2.1 初始化,传入appId
OSPush.initOSPush('your appId on OneSignal')
2.2 登录
OSPush.login('xhy')
2.3 设置别名
OSPush.setAlias('alias', '1217')
2.4 设置监听方法
OSPush.addListener((notification) => {
// 监听通知栏消息的点击
if (notification.type == 'click') {
console.log('点击了通知栏消息', notification)
}
// 监听在线推送消息
if (notification.type == 'display') {
console.log('接收到的消息内容', notification)
}
})
2.5 处理iOS点击通知栏冷启动时的消息
if (uni.getSystemInfoSync().platform == 'ios') {
// iOS点击通知栏冷启动时推送消息处理,根据自己业务自行处理。
const cachedLaunchOptions = uni.getStorageSync('OneSignalCacheLaunchOptions')
if (!cachedLaunchOptions) {
return
}
let options = JSON.parse(cachedLaunchOptions)
uni.clearStorageSync('OneSignalCacheLaunchOptions')
let noti = options['UIApplicationLaunchOptionsRemoteNotificationKey'] ?? {}
let aps = noti['aps'] ?? {}
let alert = aps['alert'] ?? {}
// 获取body
let body = alert['body'] ?? ''
// 获取subtitle
let subTitle = alert['subtitle'] ?? ''
// 获取title
let title = alert['title'] ?? ''
// 获取推送时设置的自定义参数
let custom = noti['custom'] ?? {}
let addtionalData = custom['a'] ?? {}
console.log(body, subTitle, title, addtionalData)
}
四、通过Api发送通知或者在OneSignal后台发送通知,完成测试。
五、常见问题
1、cli创建的项目使用普通授权时,由于插件加密,导致import头文件提示No such file, open **/uni_modules/hy-OneSignal?uts-proxy
此时可以参考这篇文章,手动安装依赖:"@dcloudio/uni-uts-v1": "3.0.0-4030620241128001"
2、unimodules/hy-oneSignal is not found; TypeError: undefined is not an object (evaluating 'hyOneSignal_utsProxy.initOSPush') __ERROR
添加uts插件后,由于使用到远程第三方依赖,需要重新打自定义基座,然后运行调试。
3、iOS杀死App时,点击通知栏冷启动,没进入消息监听方法。
为了不暴露AppId,将初始化方法抽离出来,在App.vue的onLaunch中完成初始化。这样也导致冷启动时,初始化发生在通知栏消息点击之后,无法处理这条消息。
解决办法:在插件中将应用启动时的launchOptions缓存在本地,需要开发者在app.vue中去取出title、subTitle、body、additionalData去自行处理消息。
if (uni.getSystemInfoSync().platform == 'ios') {
// iOS点击通知栏冷启动时推送消息处理,根据自己业务自行处理。
const cachedLaunchOptions = uni.getStorageSync('OneSignalCacheLaunchOptions')
if (!cachedLaunchOptions) {
return
}
let options = JSON.parse(cachedLaunchOptions)
uni.clearStorageSync('OneSignalCacheLaunchOptions')
let noti = options['UIApplicationLaunchOptionsRemoteNotificationKey'] ?? {}
let aps = noti['aps'] ?? {}
let alert = aps['alert'] ?? {}
// 获取body
let body = alert['body'] ?? ''
// 获取subtitle
let subTitle = alert['subtitle'] ?? ''
// 获取title
let title = alert['title'] ?? ''
// 获取推送时设置的自定义参数
let custom = noti['custom'] ?? {}
let addtionalData = custom['a'] ?? {}
console.log(body, subTitle, title, addtionalData)
}

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 1109
赞赏 9
下载 10667132
赞赏 1797
赞赏
京公网安备:11010802035340号