­

腾讯信鸽集成

  • 2019 年 10 月 5 日
  • 笔记

背景

现在移动推送很多大厂都在做,腾讯信鸽跟个推、极光、友盟比算是比较晚的一个了。 但这并不妨碍我用它。

服务端

这边服务端用的C#,有两种方式集成腾讯信鸽: 1.引用官方编译好的XingeApp.dll 推荐,相当简单方便,基本的Api都有。 ps:老版本的NewtonsoftJson(低于10.0.0)可能会报错。 2.调用Restful Api 不谈,稍微麻烦了些。

Android端

推荐使用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);          }        }  }