解决友盟推送(U-Push)的register不成功,返回错误信息s=-11,s1=accs bindapp error

来源:互联网 发布:网络保险中介会倒闭吗 编辑:程序博客网 时间:2024/05/16 05:15

项目中用到友盟推送U-Push实现版本更新的业务,然而按照官方教程配置完后,在一部4.4的小米上推成功了,但是7.0的华为测试机推不到,代码中跟问题发现

    //使用友盟UPush服务进行新版本推送    private void initUPush(){        PushAgent mPushAgent = PushAgent.getInstance(this);        //注册推送服务,每次调用register方法都会回调该接口        mPushAgent.register(new IUmengRegisterCallback() {            @Override            public void onSuccess(String deviceToken) {                //注册成功会返回device token            }            @Override            public void onFailure(String s, String s1) {                Log.e(U_PUSH_REGISTER_FAIL,"s:"+s+"\ns1:"+s1);            }        });    }

在这个注册推送服务的方法中,回调onFailure(),s=-11,s1=accs bindapp error,拿不到deviceToken。

先说官方咋说的,第一步,查看UMENG_APPKEY和UMENG_MESSAGE_SECRET;第二步,工程中其他Module的libs目录的so文件目录必须和PushSDK下的so文件目录一样

我PushSDK下libs目录有俩放so文件的目录:armeabi,x86;其他Module里没有存放so文件的目录,于是我将这俩目录按个Module拷了一遍,仍旧拿不到deviceToken

在此基础上,某大神给出solution:在PushSDK 这个 Module 的gradle文件中添加如下代码

repositories {    mavenCentral()    flatDir {        dirs 'libs' //this way we can find the .aar file in libs folder    }}
原理未知,了解的同仁们可以评论里解答一下这段是干啥的。但是依旧没有成功返回deviceToken

在以上的基础上,我又在我的app Module下的gradle文件中加入了另一位大神的一段代码如下,

android {        defaultConfig {                ndk {            abiFilters 'armeabi'            abiFilters 'x86'        }    }}
这段代码里,ndk的abiFilters属性,填写的是需要的CPU型号,如果我只要arm32位的,那就只填写armeabi-v7a,而我的so文件就只有armeabi,x86,所以这个abiFilters属性应该就只有这两项,具体原理还是希望能深入一点理解,希望有懂的帮忙评论一下。但是此次拿到了deviceToken,然后测试模式下也推送成功了

有任何其他关于此问题的进展,我会不断补充。


阅读全文
0 0
原创粉丝点击