现在移动推送很多大厂都在做,腾讯信鸽跟个推、极光、友盟比算是比较晚的一个了。 但这并不妨碍我用它。
这边服务端用的C#,有两种方式集成腾讯信鸽: 1.引用官方编译好的XingeApp.dll 推荐,相当简单方便,基本的Api都有。 ps:老版本的NewtonsoftJson(低于10.0.0)可能会报错。 2.调用Restful Api 不谈,稍微麻烦了些。
推荐使用Android Studio一键引用。就很方便了。(基于AS 3.0.1) build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
...
ndk {
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
}
manifestPlaceholders = [
XG_ACCESS_ID:"your id",
XG_ACCESS_KEY : "your key",
]
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
...
implementation 'com.tencent.xinge:xinge:3.2.2-release'
implementation 'com.tencent.wup:wup:1.0.0.E-release'
implementation 'com.tencent.mid:mid:4.0.6-release'
}
注册清单Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kuaijiajin.julynovel">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:name=".application.MyApplication"
android:theme="@style/AppTheme">
<receiver android:name=".receiver.XGReceiver"
android:enabled="true">
<intent-filter>
<!-- 接收消息透传 -->
<action android:name="com.tencent.android.tpush.action.PUSH_MESSAGE" />
<!-- 监听注册、反注册、设置/删除标签、通知被点击等处理结果 -->
<action android:name="com.tencent.android.tpush.action.FEEDBACK" />
</intent-filter>
</receiver>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
在业务界面或者Application处注册
public class MyApplication extends Application {
@Override
public void onCreate(){
super.onCreate();
XGPushManager.enableService(this, true);
XGPushManager.registerPush(this, new XGIOperateCallback() {
@Override
public void onSuccess(Object o, int i) {
LogUtils.dTag("注册成功,设备token为:", o);
}
@Override
public void onFail(Object o, int errCode, String s) {
ToastUtils.showLong("注册失败,错误码:" + errCode + ",错误信息:" + s);
}
});
}
}
继承receiver实现点击跳转
public class XGReceiver extends XGPushBaseReceiver {
@Override
public void onTextMessage(Context context,XGPushTextMessage message){
}
@Override
public void onRegisterResult(Context context,int errorCode,XGPushRegisterResult registerMessage){
}
@Override
public void onUnregisterResult(Context context, int errorCode){
}
@Override
public void onSetTagResult(Context context,int errorCode,String tagName){
}
@Override
public void onDeleteTagResult(Context context, int errorCode,String tagName){
}
@Override
public void onNotifactionShowedResult(Context context, XGPushShowedResult notifiShowedRlt){
}
@Override
public void onNotifactionClickedResult(Context context, XGPushClickedResult message){
if(ActivityUtils.isActivityExists("com.kuaijiajin.julynovel", MainActivity.class.getName())){
ActivityUtils.finishToActivity(MainActivity.class, false);
MainActivity activity = (MainActivity) ActivityUtils.getActivityList().get(0);
if(activity.mHandler != null){
Message msg = new Message();
Bundle bundle = new Bundle();
bundle.putString("content", message.getContent());
bundle.putString("title", message.getTitle());
msg.what = 1;
msg.setData(bundle);
activity.mHandler.sendMessage(msg);
}
}else{
Intent intent = new Intent(context, MainActivity.class);
context.startActivity(intent);
}
}
}