Kenny018
Kenny018
  • 发布:2017-10-24 17:03
  • 更新:2017-12-14 15:53
  • 阅读:3764

【已经解决】IOS push个推client id不能获得

分类:MUI

为了测试IOS版本个推push,按照现有的教程设置了

  1. 个推的appid, appkey等
  2. 在苹果开发者网站,申请了development的app,APNs的证书等等。
  3. 创建了一个简单的MUI project, 只是把client id, token id等显示在<input type='text'> 里面。而且个推的设置也按照教程设置好了。
  4. IOS打包,也创建了provision 文件,p12证书等。打包后,用同步推安装到我的测试iphone上了。
  5. IOS版本是10.3 (iphone7s)

问题来了:
获取 plus.push.getClientInfo().clientid, 是空的。其他token,appid,appkey都成功。
我再个推的页面发透传信息,目标:全部用户,mui是可以收到透传信息的。

但是因为获取不了clientid(CID),就没法对个别用户发推送啊。请问这个问题怎么解决?
(用另外一台iphone5,版本7.x的有一次能获取到,但是之后都不行了)

请大神们帮帮忙,谢!!

2017-10-24 17:03 负责人:无 分享
已邀请:
Kenny018

Kenny018 (作者)

刚刚找到了解决的方法:
http://ask.dcloud.net.cn/question/6323里面dcloud技术人员的回复“由于网络一些原因,获取clientid可能滞后。”

原来clientid是需要连接到个推服务器,需要一点时间。不能一打开应用就马上获取。只要设置等待一定时间,是可以获取到的。

改写了一下,解决问题了。 android和IOS 应该都可以解决。

立树

立树 - 前端程序猿

最近也遇到了这个问题 。

我们的个推需求是这样的,在应用启动的时候(启动页)就直接获取 clientid,安卓基本上是没问题的,但是苹果总是获取不到,但是如果过一会再获取,就能获取到,所以基本上能够得到的结论就是:有网络延迟。

我们的解决方案是设置延迟:

setTimeout(function(){  
    var gpush = plus.push.getClientInfo();  
    console.log(gpush.clientid);  
},500);
  • 回梦無痕

    ...这个不保险,万一延迟厉害超过500毫秒。。。

    最好这样,保证能获取:

    var t1 = window.setInterval(function()

    {

    var info = plus.push.getClientInfo();

    if(info.clientid&&info.token)

    {

    console.log(info.clientid);

    console.log(info.token);

    //拿到了,清除定时。

    window.clearInterval(t1);

    }

    },100);

    2017-12-14 16:36

  • 立树

    666,这确实是更好的方案,谢谢~

    2017-12-14 22:19

该问题目前已经被锁定, 无法添加新回复