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

项目中用到友盟推送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,然后测试模式下也推送成功了
有任何其他关于此问题的进展,我会不断补充。


--------------------- 
作者:lknlll 
来源:CSDN 
原文:https://blog.csdn.net/lknlll/article/details/78133392 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(react,native)