每日互动推送产品个推 怎么完成Android快速集成
1、创建个推开发者帐号,请访问个推开发者中心
申请个推帐号:
2、第二步: 登记新应用
1、创建好账号进入个推开发者中心,点击左上角【登记应用】按钮,如下图所示:
2、在登记应用界面填写应用名和应用标识,勾选Android选项,并填写应用名称和包名信息,完成应用创建:
3、查看应用配置,获取到相应的AppID、AppKey、AppSecret信息:
3、第三步:打开项目工程
1、启动Android Studio, 打开您之前创建的Android项目工程:
如果需要从原有的Eclipse项目导入,请选择Import project (Eclipse ADT, Gradle, etc.):
4、添加个推SDK及相关配置
1.个推Android SDK资料包结构:
2、 添加Maven库地址
尽管个推会将最新的个推SDK同步部署在JCenter上,但是为了保障稳定使用,建议额外配置个推提供的maven库从而实现更快速的访问
在以项目名为命名的顶层build.gradle文件中,添加个推maven库地址,如下所示:
5、配置依赖
在app/build.gradle文件中引用个推SDK依赖库,如下图所示:
1、 配置 so 库
目前个推SDK支持armeabi、armeabi-v7a、arm64-v8a、mips、mips64、x86、x86_64这几种 CPU 架构,请根据项目情况指定所需的架构。
注意:如果项目中包含的其他 so 库只支持其中某几种 cpu 架构,那么应该根据其他 so 库所支持的 CPU 架构的最小集来配置。否则如果在特定架构上未能支持所有 so 库,则很可能导致程序运行异常。切记!
1)、在项目根目录下的gradle.properties文件中配置useDeprecatedNdk参数,如下图所示:
2)、在app/build.gradle文件中的android.defaultConfig下指定所需的 CPU 架构,如下图所示:
6、 配置个推应用参数
在app/build.gradle文件中的android.defaultConfig下添加manifestPlaceholders,配置个推相关的应用参数,如下图所示:
7、 配置自定义推送服务
为了让推送服务在部分主流机型上更稳定运行,个推新版本支持第三方应用配置使用自定义Service来作为推送服务运行的载体。
1)、在项目源码中添加一个继承自Android.app.Service的类,参考下列代码实现Service各个生命周期回调方法:
package com.getui.demo;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import com.igexin.sdk.GTServiceManager;
public class DemoPushService extends Service {
@Override
public void onCreate() {
super.onCreate();
GTServiceManager.getInstance().onCreate(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
return GTServiceManager.getInstance().onStartCommand(this, intent, flags, startId);
}
@Override
public IBinder onBind(Intent intent) {
return GTServiceManager.getInstance().onBind(intent);
}
@Override
public void onDestroy() {
super.onDestroy();
GTServiceManager.getInstance().onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
GTServiceManager.getInstance().onLowMemory();
}
}
2)、在AndroidManifest.xml中添加上述自定义Service:
<service
android:name="com.getui.demo.DemoPushService"
android:exported="true"
android:label="PushService"
android:process=":pushservice">
</service>
8、 配置可选权限
上述接入方式已包含个推服务所需的所有必备权限。在此之外,您还可以配置以下可选权限,以便使用个推3.0提供的电子围栏功能。请在AndroidManifest.xml的<manifest>根标签下添加如下配置:
9、 导入通知栏图标
为了修改默认的通知图标以及通知栏顶部提示小图标,请在资源目录的res/drawable-ldpi/、res/drawable-mdpi/、res/drawable-hdpi/、res/drawable-xhdpi/、res/drawable-xxhdpi/等各分辨率目录下,放置相应尺寸的文件名为push.png和push_small.png图片,如图所示:
建议的push.png图片尺寸如下:
建议的push_small.png图片尺寸如下:
该图标push_small.png将会作为通知图标展示在通知栏顶部,如下所示:
push_small.png设计规范请参考状态栏图标设计规范
10、 资源精简配置
如果您的工程启用了资源精简,即如果在app/build.gradle的android.buildTypes.release下配置了shrinkResources true,为了避免个推SDK所需资源被错误精简导致功能异常,需要在项目资源目录res/raw中添加keep.xml文件,路径如下:
1)、在SDK资料包中GETUI_ANDROID_SDK/资源文件/raw目录下有keep.xml示例文件,完整内容如下:
2)、如果你的项目工程已经使用了keep.xml,则只需在tools:keep中增加对@layout/getui_notification的声明,例如:
3)、如果你的工程使用了AndResGuard进行资源精简,为了避免个推SDK所需资源被错误精简导致功能异常,需要为个推添加白名单配置。
4)、gradle集成AndResGuard的方式,需要您在andResGuard的whiteList节点下添加如下代码:
5)、命令行使用AndResGuard的方式,需要您在config.xml文件中的<issue id=whitelist>节点下添加如下代码:
1、第五步: 编写集成代码
1、初始化SDK
建议应用开发者在Activity或Service类中调用个推SDK的初始化方法,确保SDK在各种情况下都能正常运行。一般情况下可以在主Activity的onCreate()或者onResume()方法中调用,也可以在多个主要界面Activity的onCreate()或onResume()方法中调用。反复调用SDK初始化并不会有什么副作用。
1)、在应用的 Activity 里导入PushManager类,如下所示:
2)、然后在 Activity 的onCreate()或者onResume()方法中调用个推SDK初始化方法。如果使用了自定义推送服务,初始化方法还需要传入新的自定义推送服务名:
2、接收推送服务事件
推荐应用开发者使用新的IntentService方式来接收推送服务事件(包括CID获取通知、透传消息通知等)
1)、在项目源码中添加一个继承自com.igexin.sdk.GTIntentService的类,用于接收CID、透传消息以及其他推送服务事件。请参考下列代码实现各个事件回调方法:
package com.getui.demo;
import android.content.Context;
import android.os.Message;
import android.util.Log;
import com.igexin.sdk.GTIntentService;
import com.igexin.sdk.PushConsts;
import com.igexin.sdk.PushManager;
import com.igexin.sdk.message.FeedbackCmdMessage;
import com.igexin.sdk.message.GTCmdMessage;
import com.igexin.sdk.message.GTTransmitMessage;
import com.igexin.sdk.message.SetTagCmdMessage;
/**
* 继承 GTIntentService 接收来自个推的消息, 所有消息在线程中回调, 如果注册了该服务, 则务必要在 AndroidManifest中声明, 否则无法接受消息<br>
* onReceiveMessageData 处理透传消息<br>
* onReceiveClientId 接收 cid <br>
* onReceiveOnlineState cid 离线上线通知 <br>
* onReceiveCommandResult 各种事件处理回执 <br>
*/
public class DemoIntentService extends GTIntentService {
public DemoIntentService() {
}
@Override
public void onReceiveServicePid(Context context, int pid) {
}
@Override
public void onReceiveMessageData(Context context, GTTransmitMessage msg) {
}
@Override
public void onReceiveClientId(Context context, String clientid) {
Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);
}
@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) {
}
}
2)、在AndroidManifest.xml中配置上述 IntentService 类:
<service android:name="com.getui.demo.DemoIntentService"/>
3)、在个推SDK初始化后,注册上述 IntentService 类:
// com.getui.demo.DemoIntentService 为第三方自定义的推送服务事件接收类
PushManager.getInstance().registerPushIntentService(this.getApplicationContext(), com.getui.demo.DemoIntentService.class);
1、第六步:
1、连接手机或启动Android模拟器,编译运行你的工程,查看logcat信息。在搜索框中输入clientid,如果能显示clientid is xxx日志,则说明个推SDK已经成功运行起来了:
2、登录 个推开发者中心,进入【个推·消息推送】产品,点击【创建推送】,进入待测试应用的推送通知界面:
3、依次填写通知标题和通知内容,点击发送按钮即可向该推送应用名下所有CID推送通知消息。具体推送操作方法详见:创建推送通知
4、如果手机或模拟器收到消息,显示下图所示通知,那么恭喜您,个推SDK接入测试已经成功完成!