接入华为推送,开发流程, 与遇到的坑(PUSH SDK 和 HMS SDK)

本文收到以下链接,的一部分启发:

http://cn.club.vmall.com/thread-12831573-1-1.html

思路:

首先映入眼帘的当然是注册“华为开发者联盟”,然后下载sdk,看文档,添加代码,在开发者联盟填写包名,

填写keystone的SHA2565码,后的appid填入app代码。编译,利用华为网站新建推送,测试推送

这是预想的整个流程, 实际情况在下载sdk的地方就把我搞晕了:
首先第一步下载sdk

我被坑了首先映入眼帘的是如下网址:
http://developer.huawei.com/consumer/cn/wiki/index.php?title=%E6%8E%A5%E5%85%A5%E8%AF%B4%E6%98%8E
打开,下载sdk,里面还有示例代码,很全面,然后发现给的示例代码是Eclipse的,用Android Studio 导入功能导入,开始测试
一点反应也没有,什么“获取token”没啥反应(包括在华为服务端填写包名字,越SHA256,生成appid,工程里没有填appid的地方就没有添加,包括包名字自己也改了)
放弃它

三、使用新版的推送库
网站显示有PUSH SDK 和 HMS SDK俩个sdk,说明地址如下:
http://developer.huawei.com/consumer/cn/service/hms/catalog/huaweipush.html?page=hmssdk_huaweipush_devguide
说 push sdk 不再维护
然后就是,按照说明集成新版sdk
http://developer.huawei.com/consumer/cn/service/hms/catalog/huaweipush.html?page=hmssdk_huaweipush_sdkdownload
使用Android Studio 集成,然后在manifest添加文件

http://developer.huawei.com/consumer/cn/service/hms/catalog/huaweipush.html?page=hmssdk_huaweipush_devprepare#3.2%20AndroidStudio%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83

添加java代码:

http://developer.huawei.com/consumer/cn/service/hms/catalog/huaweipush.html?page=hmssdk_huaweipush_devguide

四、添加推送服务

然后在管理中心,添加push服务,添加,包名(需要添加自己的包名,即没有被使用过的),添加自己的keystone的SHA256码,获取到appid添加到manifest里面
开始测试代码:运行,在以下函数获取到了错误代码:
public void onConnectionFailed(ConnectionResult arg0) {                       
Log.i(TAG, "HuaweiApiClient连接失败,错误码:" + arg0.getErrorCode());      
得到的错误代码是1    

官网上的错误代码列表部分内容如下:

错误代码:1  ConnectionResult.SERVICE_MISSING  设备上未安装华为移动服务  收到此错误码需要在onConnectionFailed回调中调用resolve处理,具体内容请参见开发指南。
错误代码:2  ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED  设备上安装的华为移动服务需要升级 收到此错误码需要在onConnectionFailed回调中调用resolve处理,具体内容请参见开发指南。  
错误代码:6  ConnectionResult.BINDFAIL_RESOLUTION_REQUIRED  aidl绑定失败  收到此错误码需要在onConnectionFailed回调中调用resolve处理,具体内容请参见开发指南。    

按照提示,安装了“华为移动服务”(本人使用魅族手机)然后得到错误码2,

所以从华为商店下载了最新版本的“华为移动服务”(http://appstore.huawei.com/app/C10132067)

这回得到的错误码是6,没辙了(其实是因为“华为移动服务”没有后台启动权限,下面会讲到)
放弃回家(抱怨华为也不给个HMS SDK的示例代码)

五、找到HMS SDK示例Android Studio demo工程(解决问题的关键)
第二天早晨,打开华为开发者联盟,在里面游走,发现了以下地方(真是的:华为的sdk下载地址有俩个,一个是旧版本,一个新版本,不在一块):
HMS SDK示例Android Studio demo工程(看这篇博客来解决华为推送问题的,直接看在下面这个链接看官方提供的例子吧,如果和我一样,以前没有找到这个地址)
http://developer.huawei.com/consumer/cn/service/hms/catalog/huaweipush.html?page=hmssdk_huaweipush_sample_code_c
这个地址之前居然没有找到:里面有非常棒的例子,

根据提示:需要给“华为移动服务”开启后台启动等之类的权限,然后在魅族的”安全中心“把”华为移动服务“的后台管理权限选择到”允许后台允许“,
示例的代码就可以打开了。

注意:自己运行示例工程的时候需要对代码做一些更改:
1.更改应用的包名,因为要在“华为开发者联盟”里面添加push服务,里面需要填写包名,但是示例代码的包名是被注册过的,不能使用了提示“参数不合法”(又是误导),因此在示例工程里,把所有关于包名的地方都自己改一个名字。
然后在build.gradle里面修改signingConfigs,填入自己所使用的keystone,
2.按照文档说明,生成keystone的SHA256码,然后在“华为开发者联盟”的管理中心添加push服务,填入新的包名和SHA256值,
3.运行示例代码,可以正常获取到keystone和接受到推送

4.使用推送工具推送的时候需要填写,MEID,这个字段,在token可以获取(“关于手机”里面可以看到自己的MEID)

你可能感兴趣的:(Android)