Android 第三方音讯推送之个推集成
一:简介
个推Android SDK为Android利用提供了平安稳固的推送服务模块,开发者只需在原有App中进行简略的配置和编码工作,即可疾速取得实时稳固的音讯推送能力。
第三方推送次要是依照对方提供的开发文档集成就好
二:推送流程
1.App调用个推SDK初始化接口,获取推送标识ClientID(简称CID)
2.App将CID将CID上传到服务端进行保留。通常须要将该CID与相应的用户ID进行关联,以便后续针对特定用户进行音讯推送
3.业务方服务器须要给指定CID的设施发送音讯时,调用个推服务器音讯推送接口,个推服务器寻找指标设施,将音讯下发给相应的个推SDK,进而将音讯进行展现或者APP自行处理
三:权限管制
在AndroidManifest下的<manifest>节点下
<uses-permission android:name="android.permission.INTERNET" /> <!--查看网络状态,sdk重连机制等须要应用--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--获取手机状态参数,并作为生成个推惟一标识的必要参数--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!--查看wifi连贯状态--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!--开机自启动权限,晋升sdk沉闷,保障触达--> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!--读写权限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--触动--> <uses-permission android:name="android.permission.VIBRATE" /> <!--获取工作信息,目标是避免sdk被频繁唤醒--> <uses-permission android:name="android.permission.GET_TASKS" />
四:集成
第一步:在我的项目根目录build.gradle文件下,配置maven仓库
allprojects { repositories { google() jcenter() maven { url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/" } }}
第二步:配置依赖
在app下的build.gradle,增加sdk依赖
//个推implementation 'com.getui:sdk:2.14.1.0' //个推统计implementation 'com.getui:gssdk:2.3.0.1'
并在android下defaultConfig节点下配置个推的生成的AppId等
android{defaultConfig{ //个推 //从 3.1.2.0 版本开始,APPID 占位符从 GETUI_APP_ID 切换为 GETUI_APPID //后续所有产品的 APPID 均对立配置为 GETUI_APPID 占位符 manifestPlaceholders = [ GETUI_APP_ID : "*********************", GETUI_APP_KEY : "*********************", GETUI_APP_SECRET : "*********************", GS_APPID : *********************", ] ndk { //抉择要增加的对应cpu类型的.so库。 abiFilters 'arm64-v8a','armeabi', 'armeabi-v7a', 'x86_64','x86' }}}
个推3.1.2.0当前
1.移除 Gradle 中 GETUI_APP_KEY、GETUI_APP_SECRET、配置,GETUI_APP_ID 改为 GETUI_APPID, AndroidManifest 中仅保留 GETUI_APPID 占位符。
2.为兼容 Android 9.0,请在 application 节点增加 android:usesCleartextTraffic="true";
3.新增PushManager.getInstance().initialize(Context context) 接口进行初始化,举荐应用该接口进行初始化。
4.新增PushManager.getInstance().setDebugLogger(Context context, IUserLoggerInterface loggerInterface) 接口,用于调试日志输入。
第四步:配置推送服务
为了让推送服务在局部支流机型上更稳固运行,从 2.9.5.0 版本开始,个推反对第三方利用配置应用自定义 Service 来作为推送服务运行的载体。
在我的项目中
public class MessageCustomPushService extends PushService {}//在AndroidManifest中<service android:name=".pushservice.MessageCustomPushService" android:exported="true" android:label="PushService" android:permission="android.permission.BIND_JOB_SERVICE" android:process=":pushservice"//另一个过程 />
第五步:设置图标
具体可见个推集成文档
第六步:编写集成代码
1.初始化SDK
调用个推初始化代码PushManager.getInstance().initialize(Context context) 进行 SDK 的初始化。咱们倡议开发者在 Application.onCreate() 和主 Activity.onCreate() 办法中初始化个推 SDK。屡次调用 SDK 初始化并无影响。为了保障 SDK 服务稳固,举荐疏导用户受权相干的隐衷权限。
2.自定义接管推送服务事件
/** * 继承 GTIntentService 接管来自个推的音讯,所有音讯在线程中回调,如果注册了该服务,则务必要在 AndroidManifest 中申明,否则无奈承受音讯 */public class MessageReceiveIntentService extends GTIntentService { @Override public void onReceiveServicePid(Context context, int pid) { } // 解决透传音讯 @Override public void onReceiveMessageData(Context context, GTTransmitMessage msg) { // 透传音讯的解决,详看 SDK demo } // 接管 cid @Override public void onReceiveClientId(Context context, String clientid) { Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid); } // cid 离线上线告诉 @Override public void onReceiveOnlineState(Context context, boolean online) { } // 各种事件处理回执 @Override public void onReceiveCommandResult(Context context, GTCmdMessage cmdMessage) { } // 告诉达到,只有个推通道下发的告诉会回调此办法 @Override public void onNotificationMessageArrived(Context context, GTNotificationMessage msg) { } // 告诉点击,只有个推通道下发的告诉会回调此办法 @Override public void onNotificationMessageClicked(Context context, GTNotificationMessage msg) { }}<service android:name="com.getui.demo.service.DemoIntentService" android:permission="android.permission.BIND_JOB_SERVICE"/>
五:接口相干介绍
Tag[] tags=new Tag[]{};
PushManager.getInstance().setTag(Context context,Tag[] tags,String s);标签接口类,用于给用户打上标签(如能够用于精准推送)
等其余可见开发者文档
六:个推统计SDK集成
同上差不多,集成AppID
//1.从启动利用到敞开利用//2.从启动利用到利用退至后盾,且在后盾运行工夫超过 30s GsConfig.setSessionTimoutMillis(20 * 60 * 1000); //开启开发者模式: GsConfig.setDebugEnable(isDebug); GsConfig.setInstallChannel(channel); //SDK 初始化 GsManager.getInstance().init(mApplication);
结尾:小时候想把头发梳成小孩儿模样,长大后才发现小孩儿其实没有什么头发