前言
本文章也是就在接入过程中遇到的一些小问题做个记录,希望对遇到问题的开发者有些许帮助。
接入的SDK 版本为:Push SDK 6.1.0
官方文档
目前,友盟推送仅支持以下五家厂商的离线推送。
小米
华为
魅族
OPPO
VIVO
友盟推送具体文档请参考:
[https://developer.umeng.com/docs/67966/detail/98589]
开始接入
统一配置
在友盟推送管理后台的【应用管理】—>【应用信息】填写各厂商的应用信息(AppKey,AppSecret等),并保存。
友盟推送管理后台地址:
[http://message.umeng.com]
公用代码块
- 各厂商通道弹窗功能
// FileName: MipushTestActivity.java
public class MipushTestActivity extends UmengNotifyClickActivity {
private static String TAG = MipushTestActivity.class.getName();
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.activity_mipush);
}
@Override
public 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”:
- 推送API中一定得存在以下两个重要字段,才可以实现离线推送噢
//两个重要字段
"mipush":true
"mi_activity":"com.umeng.message.example.MipushTestActivity" //此处请填写Activity完整包路径
//推送消息json示例
{
"appkey": "",
"mi_activity": "com.umeng.message.example.MipushTestActivity"
"mipush": true,
"timestamp": 1473225266373,
"production_mode": "true",
"type": "unicast",
"device_tokens": "",
"payload":
{"body":
{"text": "from pa36a",
"after_open": "go_app",
"ticker": "Hello World",
"title": "listcastpa43"
},
"display_type": "notification",
}
}
Tips : 友盟推送管理后台直接创建推送任务时,请选择发送策略中的厂商通道需选中,并配置打开指定页面,打开指定页面需要配置有继承 UmengNotifyClickActivity 的页面完整路径,例如 MipushTestActivity 的完整路径 : com.umeng.message.example.MipushTestActivity
1. 小米
① 小米开放平台 —> 注册账号 —> 创建应用
② 友盟推送管理后台配置AppSecret
③ 调用方法注册,入参AppId,AppKey,即可:
MiPushRegistar.register(final Context context, final String XIAOMI_ID, final String XIAOMI_KEY);
小米推送无重要注意事项,不过多赘述
2. 华为
① 华为开放平台 —> 注册账号 —> 创建应用
【我的应用】—>【运营】—>【推送服务】
开启推送服务
配置回执状态
- 回调地址:
https://agoo-ack.m.taobao.com/hw/
- HTTPS证书:
-----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-----
-
配置SHA256证书指纹,切记,切记,切记,重要的话说三遍
位置:【我的项目】—>【项目设置】—>【常规】
② 友盟推送管理后台配置AppId,AppSecret
③ 加入代码块
//需要在AndroidManifest.xml中配置AppID,其中xxxxxx为华为应用的AppID
④ 调用方法注册,即可:
HuaWeiRegister.register(final Context context);
⑤ 还是无法推送的话,可以尝试一下 targetSdkVersion 降低至 25
Tips : 应用未通过审核是不影响离线推送服务的噢!
3. 魅族
① 魅族开放平台 —> 注册账号 —> 创建应用
-
配置回执
位置:【配置管理】—>【回执管理】—>【新增】
http://agoo-ack.m.taobao.com/mz/
② 友盟推送管理后台配置AppId,AppSecret
③ 加入代码块
//自定义Recevier组件受魅族接入方式限制,必须在包名目录实现一个自定义Recevier,继承自MeizuPushReceiver,例如:
public class MeizuTestReceiver extends MeizuPushReceiver {
}
//然后在AndroidManifest.xml中配置该Recevier,例如:
④ 调用方法注册,入参AppId,AppKey,即可:
MeizuRegister.register(Context context, String meizuAppId, String meizuAppKey);
4. OPPO
① OPPO推送平台 —> 注册账号 —> 创建应用
② 友盟推送管理后台配置AppKey, MasterSecrect (此时的 MasterSecrect 对应OPPO推送平台的 AppServerSecret)
③ 调用方法注册,入参AppKey,AppSecret (此时的 AppSecret 对应OPPO推送平台的 AppSecret),即可:
//OPPO通道,参数1为app key,参数2为app secret
OppoRegister.register(this, "xxxxxx", "xxxxxx");
OPPO推送无重要注意事项,不过多赘述
5. VIVO
① VIVO推送平台 —> 注册账号 —> 创建应用
② 友盟推送管理后台配置AppId,AppKey, AppSecret
③ 加入代码块
//在Manifest文件中声明App ID 和 App Key,示例如下:
④ 调用方法注册,即可:
//vivo 通道
VivoRegister.register(this);
Tips : 应用未通过审核是无法进行离线推送服务的噢!
VIVO推送无重要注意事项,不过多赘述
End
本文内容比较简单,只是稍微整理了一下,如果能帮助到有需要的开发者也是非常荣幸的一件事情!
本人菜鸟一枚,如有误望指出,不胜感激!