吃辣条的大妖怪
吃辣条的大妖怪
  • 发布:2019-02-27 11:05
  • 更新:2019-07-02 15:48
  • 阅读:4966

UNIAPP项目+个推成功实现推送功能

分类:uni-app

首次使用uniapp实现app开发

使用个推sdk,实现app的消息推送;
找遍了文档,没找到方法,最终结合H5+的方式实现消息推送
带参数跳转指定页面。

参考 uniapp 提供官方文档
uni.getProvider(OBJECT)
获取服务供应商;
uni.subscribePush(OBJECT)
开启推送;
上述可获取到推送的基本信息,token ,appid,appkey ,CID等信息。

uni.onPush(OBJECT)
监听透传数据。
多种方式实验过后,仍是无法监听;(个人能力问题,还是不知道哪里实现监听T T)

最终解决方法:
为在APP.vue中使用;


    //#ifdef APP-PLUS  

          /* 5+  push 消息推送 ps:使用:H5+的方式监听,实现推送*/  
        plus.push.addEventListener("click", function(msg) {  
                plus.ui.alert("click:"+JSON.stringify(msg));  
                plus.ui.alert(msg.payload);  
                // plus.ui.alert(JSON.stringify(msg));  

            }, false);  
                // 监听在线消息事件    
            plus.push.addEventListener("receive", function(msg) {  
                // plus.ui.alert(2);  
                plus.ui.alert("recevice:"+JSON.stringify(msg))  
       }, false);  

   //#endif  

在app.vue的 onLaunch 生命周期内,实现跳转也出现过问题。
应该是页面还没加载,加上定时后,可实现功能;

setTimeout(function(){
uni.navigateTo({
url: '../fire/detail?detailID='+msgObj.id
})
},1000);

page.json ;有配置

强制打开 app后在 自动首页打开,所有跳转链接是路径不是在app.vue的写法;
需要从main.vue下找到 需要跳转的路径 。所以的我是 “../xxx/xxx”

解决推送问题的同时也顺便解决了之前一直想要监听事件的问题;
uniapp下的监听都在app.vue下;
其他页面无法监听;

个人方式实现功能,希望可以有帮助,小伙伴们有更好的可以多多交流。

9 关注 分享
SimpleJalon 543123909@qq.com 2来2去 小橙子敲代码 964388535@qq.com 281901311@qq.com 海中飞鱼 42208006@QQ.com 草灯

要回复文章请先登录注册

1162172981@qq.com

1162172981@qq.com

回复 吃辣条的大妖怪:
不是,是这样的,只有ios上面才会出现clientid获取不到的问题,第一次启动是可以获取到的,关掉应用再次进来就获取不到了,但是等上几分钟后再次进来的时候还是能获取到的。应该是属于一个bug
2019-07-02 15:48
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 1162172981@qq.com:
你怎么调用的,是不是这个事件,只触发了一次?
2019-07-02 15:44
1162172981@qq.com

1162172981@qq.com

回复 吃辣条的大妖怪:
你好 。你说的clientid 我第一次获取到了,但是之后就获取不到了。
2019-07-02 13:35
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 18337588370@163.com:
我才看明白你的问题;你是要获取clientId吗?这个代码不要放在app.vue内,哪里使用到了就放在哪个页面;
我是在登录里面用的,放在了login下面;
在onLoad里面调用就行了

getPushClientID() {
var clientObj = plus.push.getClientInfo();
console.log(JSON.stringify(clientObj));
console.log(clientObj.clientid);
this.clientid = clientObj.clientid
this.autoLogin();
},
2019-06-29 15:48
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 18337588370@163.com:
什么都不弄,只在个推里面配置好后,发送测试推送,能收到吗
2019-06-29 15:40
18337588370@163.com

18337588370@163.com

回复 吃辣条的大妖怪:
// #ifdef APP-PLUS
var clientid = plus.push.getClientInfo()
console.log(clientid)
uni.setStorageSync('clientid', clientid)
// #endif
// uni.getProvider({
// service: 'push',
// success: function(res) {
// console.log(res.provider)
// // #ifdef APP-PLUS
// plus.nativeUI.alert('success'+JSON.stringify(res));
// // #endif
// // 个推的名称为 igexin
// if (~res.provider.indexOf('igexin')) {
// uni.subscribePush({
// provider: 'igexin',
// success: function(res) {
// console.log('success:' + JSON.stringify(res));
// // #ifdef APP-PLUS
// plus.nativeUI.alert('success'+JSON.stringify(res));
// // #endif
// uni.setStorageSync('clientid', clientid)
// }
// });
// }
// }
// });
我也是这样做的,不管是5+还是uni都获取不到个推动的id,云打包,自定义基座打包都不行,配置里面已经填写了个推生成的id,key等
2019-06-29 11:20
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 18337588370@163.com:
我是结合H5+做的,你可以参考我贴的代码,先把个推测通能接收到推送。
2019-06-29 10:57
18337588370@163.com

18337588370@163.com

大哥,我的为什么使用uni.getProvider(OBJECT)获取不到个推的id(igexin)呢?拿到的都是unipush,打包也不执行,我把uni.getProvider(OBJECT)写到app.vue中了
2019-06-28 17:33
cat_eat_fish

cat_eat_fish

通知栏有推送通知 ,前端没有监听到 要是有这种情况的 骂死后端!!!!后端可能是没做透传 或是把透传的部分代码注释了!
2019-06-18 15:47
cat_eat_fish

cat_eat_fish

回复 吃辣条的大妖怪:
大哥 我是 真服了 想让别人 提问题 自己qq 又加 那么多 没用的限制 自己 又懒得 加别人qq 临时会话 又不能 留言又不回
2019-06-18 12:29
cat_eat_fish

cat_eat_fish

回复 吃辣条的大妖怪:
大哥 加我 为好友 才可以说话
2019-06-18 11:56
cat_eat_fish

cat_eat_fish

回复 吃辣条的大妖怪:
大哥 ?
2019-06-18 11:31
cat_eat_fish

cat_eat_fish

回复 吃辣条的大妖怪:
加我 qq 961166897
2019-06-18 11:18
cat_eat_fish

cat_eat_fish

回复 吃辣条的大妖怪:
是在 onLaunch 作的
2019-06-18 11:16
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 cat_eat_fish:
没监听到?是不是放错地方了= =
2019-06-18 11:01
cat_eat_fish

cat_eat_fish

回复 吃辣条的大妖怪:
有推送的内容了 点击 没进click 函数 也没有 进 监听函数
2019-06-18 10:51
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 cat_eat_fish:
1.先在个推配置好后,打包apk,测试是否收到推送;
2.确定收到推送后,在测试点击进去处理的功能;
2019-06-18 10:47
cat_eat_fish

cat_eat_fish

感觉没用呀 什么都没走
2019-06-18 10:33
xwjonline

xwjonline

Mark一下,马上做推送模块了
2019-05-28 21:23
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 陸畫信:
安卓可以
2019-05-27 17:57
陸畫信

陸畫信

推送功能,app不上架,能不能用的?
2019-05-17 17:17
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 云里梦里:
要在配置文件里要配置的。配置好之后,可以先通过个推平台上测试。
2019-04-23 17:19
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

回复 jtshushu:
我这个进程关了就收不到,可以去官方文档上找一下,应该有提供方法
2019-04-23 17:17
jtshushu

jtshushu

没打开app或关闭 可以用个推推送吗 你们是怎么解决呢
2019-04-23 12:02
云里梦里

云里梦里

个推的集成不用调取 向个推平台注册账号的接口吗? 云打包安装后发现个推平台没有新的注册用户,这个是什么原因造成的呀?
2019-04-11 19:50
964388535@qq.com

964388535@qq.com

hi
2019-04-03 10:26
1069668081@qq.com

1069668081@qq.com

为什么我写了监听事件,根本监听不到啊,进不到回调函数里
2019-04-02 16:43
2来2去

2来2去

实际不用非放在 app.vue 下也可以。放在index.vue里。可以加点其他业务 。比如声音提醒,等等。
2019-03-12 11:02
qw5558912@126.com

qw5558912@126.com

可以,我也试下,我也在研究这个
2019-03-03 13:42
吃辣条的大妖怪

吃辣条的大妖怪 (作者)

个推透传消息:
{"title":"223e","content":"232323i","payload":"{\"id\":\"6358\"}"};
所以在取到payload,转对象后使用。
2019-02-27 11:13