Ayumi
Ayumi
  • 发布:2018-07-06 16:17
  • 更新:2021-10-30 20:06
  • 阅读:7380

获取机器信息plus.push.getClientInfo().clientid不稳定,第一次安装获取为null

分类:HTML5+

很奇怪的问题
app打开登陆界面,用户输入用户和密码,点击登陆时,把clientid传到服务器入数据库,但第一次安装打开输入用户和密码登时,数据库获取的clientid是null,第二次以后,正常获取。
clientid = plus.push.getClientInfo().clientid;

var clientid = '';  
    $.plusReady(function() {  

        //初始化获取app的clientid  
        clientid = plus.push.getClientInfo().clientid;  
        console.log('clientid:'+clientid);  
    })  

/**  
     * 用户登录  
     **/  
    owner.login = function(loginInfo, callback) {  
        callback = callback || $.noop;  
        loginInfo = loginInfo || {};  
        loginInfo.account = loginInfo.account || '';  
        loginInfo.password = loginInfo.password || '';  
        if (loginInfo.account.length == 0) {  
            return callback('账号不能为空');  
        }  
        if (loginInfo.password.length == 0) {  
            return callback('密码不能为空');  
        }  

        //ayu ajax服务器验证 2018.06.07  
        $.ajax(owner.baseUrl+'login/',{  
            data:{  
                username: loginInfo.account,  
                password: loginInfo.password,  
                clientid: clientid  
            },  
            dataType:'json',//服务器返回json格式数据  
            type:'post',//HTTP请求类型  
            timeout:10000,//超时时间设置为10秒;  
            headers:{'Content-Type':'application/json'},  
            success:function(data){  
                //服务器返回响应,根据响应结果,分析是否登录成功;  
                console.log(JSON.stringify(data));  
                if(data.status==true){  
                    owner.createState(loginInfo.account, callback, data.access_token, data.user_id);  
                }  
                if(data.status==false)  
                {  
                    return callback(data.msg);  
                }  

            },  
            error:function(xhr,type,errorThrown){  
                //异常处理;  
                console.log('error:'+type);  
                callback('服务器繁忙,请稍后再试。')  
            }  
        });  

    };

2018-07-06 16:17 负责人:无 分享
已邀请:
回梦無痕

回梦無痕 - 暂停服务

要延迟一点时间获取,具体延迟多长不确定。。使用以下代码即可获取

var t1 = window.setInterval(function()  
{  
    var info = plus.push.getClientInfo();  
    var cid = info.clientid;  
    if(cid)  
    {  
        console.log('cid='+cid);  
        window.clearInterval(t1);     
    }                     
},50);
  • 下一页丶翻

    没用,离线打包一直是空的.

    2018-10-29 14:28

  • 回梦無痕

    回复 下一页丶翻:大哥。楼主的提问是云打包,我当然是回复云打包的方法。。。。。离线打包我没试过获取,获取不到应该是配置不对,我基本没用过几次离线打包,要用到原生代码的APP,都是集成H5+SDK去混合开发的,混合开发时候,基本都是自己集成推送,没有用过H5+的推送。

    2018-10-29 14:52

  • 百倍

    要稍微调整下

    var t1 = window.setInterval(function()

    {

    var info = plus.push.getClientInfo();

    var cid = info.clientid;

    if(cid!='null') //cid返回的是字符串null

    {

    console.log('cid='+cid);

    window.clearInterval(t1);

    }

    },50);

    2022-06-12 14:40

codesyofo

codesyofo

2019.09.03自定义基座还存在这个问题,按钮点击获取不到,要等一段时间后再点击可获取

DCloud_Android_DQQ

DCloud_Android_DQQ

这个方法获取cid是同步获取的。
但是真实的获取cid 是一个去个推服务器获取的异步操作。
所以第一次安装大概率失败。

解决办法有两个

1 改成异步获取
2 如楼上所说,延迟一会获取。

  • 5***@qq.com

    获取到的这个id是永久不变的吗

    2022-04-11 04:36

黄大大1

黄大大1 - 测试账号

改成进页面就先获取 不要等处罚登录才获取

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