及时推送个推集成

来源:互联网 发布:淘宝店铺关注人数越多 编辑:程序博客网 时间:2024/04/30 22:33

个推及时推送集成

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已经成功运行起来了:

这里写图片描述

在控制台推送必须使用真机,虚拟机貌似接收不到:

这里写图片描述

原创粉丝点击