友盟集成小米华为(快速集成和厂商通道集成) 内含很多本人遇到的坑 (下)
- 友盟集成厂商通道(小米、华为)
- 小米
- 华为
如果您还没弄好快速集成,请先看上篇 友盟集成小米华为(快速集成和厂商通道集成) 内含很多本人遇到的坑 (上) ,当然,您也可以先去各个平台申请账号,毕竟需要审核,时间就是money啊~
友盟集成厂商通道(小米、华为)
首先,先去你想集成的各大网站注册账号,当然很多网站的注册也是相当麻烦(例如oppo和vivo),申请账号审核也需要一两天时间,下面有各大网站的链接
小米
华为
vivo
oppo
魅族
小米
(我其实就是根据官方网站的文档一步步来的,可是中间有一些和它不一样的地方,我按照自己的理解做了一些处理,结果出现了各种问题,耗费了很久很久才改过来的嘤嘤嘤~这里给大家标注一下,免得大家和我一样浪费时间)
首先在小米网站中创建应用,
创建好了之后,获得了该应用的ID,key和secret,去友盟的应用信息中,把secret写在小米通道中。
回到android studio,直接用官网的方法,如果出现了问题,你也可以去小米那下载push的SDK,同样是下载好了将jar包放在libs文件夹中,依赖重复的话删掉第一句,留下umengaccs那句依赖。我就是都删掉了才导致后面的一系列错误,想想自己是真的傻。
在Application类的onCreate方法中添加:
MiPushRegistar.register(final Context context, final String XIAOMI_ID, final String XIAOMI_KEY);
(在myapplication类中,第一个参数直接是this,后面的就是你刚刚获得的ID和KEY)
注意:
仅在小米MIUI设备上生效。
集成小米push的版本暂不支持多包名。
因为我们要使用弹窗功能,所以要按照官网的内容接着弄,
小米对后台进程做了诸多限制。若使用一键清理,应用的channel进程被清除,将接收不到推送。通过接入小米托管弹窗功能,可有效防止以上情况,增加推送消息的送达率。通知将由小米系统托管弹出,点击通知栏将跳转到指定的Activity。该Activity需继承自UmengNotifyClickActivity,同时实现父类的onMessage方法,对该方法的intent参数进一步解析即可,该方法异步调用,不阻塞主线程。示例如下:
public class MipushTestActivity extends UmengNotifyClickActivity {private static String TAG = MipushTestActivity.class.getName();@Overrideprotected void onCreate(Bundle bundle) {super.onCreate(bundle);setContentView(R.layout.activity_mipush);}@Overridepublic void onMessage(Intent intent) {super.onMessage(intent); //此方法必须调用,否则无法统计打开数String body = intent.getStringExtra(AgooConstants.MESSAGE_BODY);Log.i(TAG, body);}
}
这里没有任何问题嗯
然后在AndroidManifest.xml中配置该Activity,并设置launchMode=”singleTask”和exported=”true”:
<activityandroid:name="com.umeng.message.example.MipushTestActivity"android:launchMode="singleTask"android:exported="true" />
这里记得换上你自己的包名和自己的activity类名
在【友盟+】推送后台发送通知时,勾选若设备离线转为系统通道下发,并填写Activity的完整包路径(该Activity需继承自UmengNotifyClickActivity)。
路径格式:com.umeng.message.example.MipushTestActivity,同样是你的包名和activity类
注意:
使用小米系统通道下发的消息,可以统计到消息的【打开数】【收到数】【忽略数】。
若要使用小米系统通道下发通知,则通知的标题(title)不允许全是空白字符且长度小于50,通知的内容(text)不允许全是空白字符且长度小于128(通知的标题和内容必填,一个中英文字符均计算为1)。
小米基本上就是这么多了,退出后台检验一下吧~!
华为
在官网首页,进入右上角管理中心,在应用市场中开发push服务,
申请PUSH服务,填写相关信息,其中有一个SHA256证书指纹1 为必填项,怎么获取这个指纹呢
首先,回到你的android studio中,创建你的app的keystore证书,至于如何创建keystore,这篇文章里写的蛮详细的,大家跟着去做就好了~
如何创建keystore
然后打开CMD命令行进入本机安装的jdk或jre下的bin目录下,
命令行输入:keytool -v -list -keystore .jks所在的路径
例如我的:keytool -v -list -keystore F:\test.jks回车,输入私钥口令,也就是你的密码(注意你输入的时候是看不见的,输入完直接回车就可以了)如图:
证书指纹获取成功!
进入华为Push服务后台,点击“操作-修改”进入设置PUSH服务信息页面,在“消息回执”区域中,选择开通回执,并分别在“回调地址”和“HTTPS证书”里输入以下内容:
https://agoo-ack.m.taobao.com/hw/
-----BEGIN CERTIFICATE-----
MIIEaTCCA1GgAwIBAgILBAAAAAABRE7wQkcwDQYJKoZIhvcNAQELBQAwVzELMAkG
A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv
b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw
MDBaFw0yNDAyMjAxMDAwMDBaMGYxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i
YWxTaWduIG52LXNhMTwwOgYDVQQDEzNHbG9iYWxTaWduIE9yZ2FuaXphdGlvbiBW
YWxpZGF0aW9uIENBIC0gU0hBMjU2IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDHDmw/I5N/zHClnSDDDlM/fsBOwphJykfVI+8DNIV0yKMCLkZc
C33JiJ1Pi/D4nGyMVTXbv/Kz6vvjVudKRtkTIso21ZvBqOOWQ5PyDLzm+ebomchj
SHh/VzZpGhkdWtHUfcKc1H/hgBKueuqI6lfYygoKOhJJomIZeg0k9zfrtHOSewUj
mxK1zusp36QUArkBpdSmnENkiN74fv7j9R7l/tyjqORmMdlMJekYuYlZCa7pnRxt
Nw9KHjUgKOKv1CGLAcRFrW4rY6uSa2EKTSDtc7p8zv4WtdufgPDWi2zZCHlKT3hl
2pK8vjX5s8T5J4BO/5ZS5gIg4Qdz6V0rvbLxAgMBAAGjggElMIIBITAOBgNVHQ8B
Af8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUlt5h8b0cFilT
HMDMfTuDAEDmGnwwRwYDVR0gBEAwPjA8BgRVHSAAMDQwMgYIKwYBBQUHAgEWJmh0
dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMDMGA1UdHwQsMCow
KKAmoCSGImh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwPQYIKwYB
BQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNv
bS9yb290cjEwHwYDVR0jBBgwFoAUYHtmGkUNl8qJUC99BM00qP/8/UswDQYJKoZI
hvcNAQELBQADggEBAEYq7l69rgFgNzERhnF0tkZJyBAW/i9iIxerH4f4gu3K3w4s
32R1juUYcqeMOovJrKV3UPfvnqTgoI8UV6MqX+x+bRDmuo2wCId2Dkyy2VG7EQLy
XN0cvfNVlg/UBsD84iOKJHDTu/B5GqdhcIOKrwbFINihY9Bsrk8y1658GEV1BSl3
30JAZGSGvip2CTFvHST0mdCF/vIhCPnG9vHQWe3WVjwIKANnuvD58ZAWR65n5ryA
SOlCdjSXVWkkDoPWoC209fN5ikkodBpBocLTJIg1MGCUF7ThBCIxPTsvFwayuJ2G
K1pp74P1S8SqtCr4fKGxhZSM9AyHDPSsQPhZSZg=
-----END CERTIFICATE-----
点击测试回执,提示测试成功!
在友盟后台,配置华为的ID和secret。
在build.gradle里导入SDK依赖,
implementation 'com.umeng.umsdk:huawei-basetb:2.6.3.305'implementation 'com.umeng.umsdk:huawei-pushtb:2.6.3.305'implementation 'com.umeng.umsdk:huawei-umengaccs:1.2.1'
在Application类的onCreate方法中添加:
HuaWeiRegister.register(final Context context);
注意:
仅在华为EMUI设备上生效。
集成华为Push的版本暂不支持多包名。
当EMUI版本为8.0且App的targetSdkVersion为26及以上时,设备会无法弹出通知。这种情况下,请升级EMUI的系统版本,或将App的targetSdkVersion设置为25或25以下。
需要在AndroidManifest.xml中配置AppID,其中xxxxxx为华为应用的AppID
<meta-dataandroid:name="com.huawei.hms.client.appid"android:value="appid=xxxxxx" />
使用华为弹窗功能和小米相同,也就是说,如果你已经像前面一样配置了小米的弹窗,就不需要再写一个弹窗了,因为在友盟的指定页面的时候也是只有一个的。
注意:
对于EMUI 4.1及以下版本系统,若要使用华为弹窗功能,则需在华为设备上的【手机管家】App中,开启应用的“自启动权限”。
使用华为通道下发的通知,需要在华为后台配置消息回执才可以正常统计到华为通道下发消息的【收到数】。
在调用API接口实现推送消息时,如果需要使用华为弹窗,需添加(与小米弹窗字段相同):
到这里,华为小米的厂商通道就介绍完了,希望大家可以成功!