使用个推向服务器注册,并接收消息,处理消息点击事件。

个推是一个非常优秀的推送平台,在项目中我使用了个推,并将集成个推的过程简要记载,希望能帮助有需要的同学。

1. 注册个推账号,申请个推应用,获取个推的appid等信息。

2. 添加Maven库地址

在以项目名为命名的顶层build.gradle文件中,添加个推maven库地址

//Maven URL地址
maven {
    url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
}

3. 配置依赖库

compile 'com.getui:sdk:2.12.3.0'

4. 配置so库

目前个推SDK支持armeabi、armeabi-v7a、arm64-v8a、mips、mips64、x86、x86_64这几种 CPU 架构,请根据项目情况指定所需的架构。

在项目根目录下的gradle.properties文件中配置useDeprecatedNdk参数

在app/build.gradle文件中的android.defaultConfig下指定所需的 CPU 架构

ndk {
    abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86","arm64-v8a","mips","mips64"
}

5.配置个推参数

在app/build.gradle文件中的android.defaultConfig下添加manifestPlaceholders,配置个推相关的应用参数

manifestPlaceholders = [
        GETUI_APP_ID : "*************",
        GETUI_APP_KEY : "*************",
        GETUI_APP_SECRET : "*************"
]

6.向后台注册个人的账号

向后台注册个人账号

获取账号:

private fun phoneInfo(): String{
        val phoneNmuber = et!!.text.toString()
        json = JSONObject()
    //获取每个用户唯一的clientid,用来发送给服务器
    val clientId: String? = PushManager.getInstance().getClientid(this)
    try {
            json.put("customerId", phoneNmuber)
            json.put("deviceId", clientId)
            json.put("supplierId", "201")
        } catch (e: JSONException) {
            e.printStackTrace()
        }
        sp = getSharedPreferences("info", Context.MODE_PRIVATE)
        val ed = sp.edit()
        ed.putString("deviceId", clientId)
        ed.commit()
        return sp.toString()
    }

提交账号:

OkHttpUtils
        .postString()
        .url(NetApi.url)
        .content(json.toString())
        .mediaType(MediaType.parse("application/json; charset=utf-8"))
        .build()
        .execute(MyStringCallback())

MyStringCallback()的处理,见我上一篇文章《OkhttpUtils向后台传送Json数据

7. 获取点击事件,向后台发送回执

override fun onReceiveMessageData(context: Context, msg: GTTransmitMessage) {

    val appid = msg.appid
    val taskid = msg.taskId
    val messageid = msg.messageId
    val payload = msg.payload
    val pkg = msg.pkgName
    val cid = msg.clientId

    // 第三方回执调用接口,actionid范围为90000-90999,可根据业务场景执行
    val result = PushManager.getInstance().sendFeedbackMessage(context, taskid, messageid, 90001)
    Log.d(GTIntentService.TAG, "call sendFeedbackMessage = " + if (result) "success" else "failed")

    Log.d(GTIntentService.TAG, "onReceiveMessageData -> " + "appid = " + appid + "\ntaskid = " + taskid + "\nmessageid = " + messageid + "\npkg = " + pkg
            + "\ncid = " + cid)

    if (payload == null) {
        Log.e(GTIntentService.TAG, "receiver payload = null")
    } else {
        data = String(payload)
        Log.d(GTIntentService.TAG, "receiver payload = $data")

        // 测试消息为了观察数据变化
        if (data == resources.getString(R.string.push_transmission_data)) {
            data = "$data-$cnt"
            cnt++
        }
        sendMessage(data.toString())
    }

    val sp = getSharedPreferences("info", Context.MODE_PRIVATE)
    val deviceId = sp.getString("deviceId", clientid)

    val jo = JSONObject(data)
    val msgId = jo.getString("messageId")
    Log.e("sdsdf","JSONObject(data)>>" + JSONObject(data))
    Log.e("sdsdf","data>>")

    json = JSONObject()
    try {
        json.put("deviceId", deviceId)
        json.put("msgId", msgId)
    } catch (e: JSONException) {
        e.printStackTrace()
    }

    OkHttpUtils
            .postString()
            .url(NetApi.url_Send)
            .content(json.toString())
            .mediaType(MediaType.parse("application/json; charset=utf-8"))
            .build()
            .execute(MyStringCallback())
}

8.配置manifest权限

上述接入方式已包含个推服务所需的所有必备权限。在此之外,您还可以配置以下可选权限,以便使用个推3.0提供的电子围栏功能。请在AndroidManifest.xml的<manifest>根标签下添加如下配置:

 

<!-- 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" />

 

完成上述步骤,即可完成使用个推向后台注册账号,并获取处理点击事件的功能。

猜你喜欢

转载自blog.csdn.net/mlsnatalie/article/details/81168453