个推及时推送集成
1. 创建个推应用
请登录 http://dev.getui.com ,选择登记应用并填写应用名称和包名信息,完成应用创建:
点击应用配置,获取到相应的AppID、AppKey、AppSecret信息:
2. 创建项目工程
创建项目之后,在Project根目录下build.gradle文件中配置maven库URL:
allprojects {
repositories {
jcenter()
maven {
url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
}
}
}
在对应的module下的build.gradle文件中添加对应依赖:
android {
......
defaultConfig {
applicationId "com.xxx.xxx" //包名
......
manifestPlaceholders = [
GETUI_APP_ID : "APP_ID",
GETUI_APP_KEY : "APP_KEY",
GETUI_APP_SECRET : "APP_SECRET"
]
ndk {
//选择要添加的对应cpu类型的.so库。
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "mips", "mips64", "x86", "x86_64"
}
......
}
......
}
dependencies {
......
compile 'com.getui:sdk:+'
compile 'com.android.support:support-v4:+'
......
}
注 : 如果在添加以上 abiFilter 配置之后android Studio出现以下提示:
NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.
则在 Project 根目录的gradle.properties文件中添加:
android.useDeprecatedNdk=true
3. 添加个推SDK及相关配置
添加可选权限
<!-- iBeancon功能所需权限 -->;
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<!-- 个推3.0电子围栏功能所需权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
在项目中添加一个继承自Android.app.Service的类,参考下列代码实现Service各个生命周期回调方法:
package com.cock.gpushdemo;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import com.igexin.sdk.GTServiceManager;
/**
* Created by Admin on 2017/5/27.
*/
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) {
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();
}
}
在AndroidManifest.xml中添加上述自定义Service:
<service
android:name="com.cock.gpushdemo.DemoPushService"
android:exported="true"
android:label="PushService"
android:process=":pushservice">
</service>
在项目源码中添加一个继承自com.igexin.sdk.GTIntentService的类,用于接收CID、透传消息以及其他推送服务事件。请参考下列代码实现各个事件回调方法:
package com.cock.gpushdemo;
import android.content.Context;
import android.util.Log;
import com.igexin.sdk.GTIntentService;
import com.igexin.sdk.message.GTCmdMessage;
import com.igexin.sdk.message.GTTransmitMessage;
/**
* Created by Admin on 2017/5/27.
*/
public class DemoIntentService extends GTIntentService {
public DemoIntentService() {
}
@Override
public void onReceiveServicePid(Context context, int pid) {
}
@Override
public void onReceiveClientId(Context context, String clientid) {
Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);
}
@Override
public void onReceiveMessageData(Context context, GTTransmitMessage gtTransmitMessage) {
}
@Override
public void onReceiveOnlineState(Context context, boolean b) {
}
@Override
public void onReceiveCommandResult(Context context, GTCmdMessage gtCmdMessage) {
}
}
在AndroidManifest.xml中配置上述 IntentService 类:
<service android:name="com.cock.gpushdemo.DemoIntentService"/>
4. 初始化SDK
一般情况下可以在主Activity的onCreate()或者onResume()方法中调用:参考代码如下
package com.cock.gpushdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.igexin.sdk.PushManager;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PushManager.getInstance().initialize(this.getApplicationContext(),DemoPushService.class);
PushManager.getInstance().registerPushIntentService(this,DemoIntentService.class);
}
}
连接手机或启动Android模拟器,编译运行你的工程,查看logcat信息。在搜索框中输入clientid,如果能显示clientid is xxx日志,则说明个推SDK已经成功运行起来了:
在控制台推送必须使用真机,虚拟机貌似接收不到: