在官网下载sdk 将jar包和so库拷贝到项目中
登录官方文档创建项目
导入so库的时候会找不到so库 可在gradle里面增加
sourceSets {//信鸽推送so库找不到 main { jniLibs.srcDirs = ['libs'] } }
<!-- 【必须】 信鸽SDK所需权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RESTART_PACKAGES" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> <uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.READ_LOGS" /> <uses-permission android:name="android.permission.VIBRATE" /> <!-- 【可选】 信鸽SDK所需权限 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BATTERY_STATS" />
<!-- 【必须】 信鸽receiver广播接收 --> <receiver android:name="com.tencent.android.tpush.XGPushReceiver" android:process=":xg_service_v2"> <intent-filter android:priority="0x7fffffff"> <!-- 【必须】 信鸽SDK的内部广播 --> <action android:name="com.tencent.android.tpush.action.SDK" /> <action android:name="com.tencent.android.tpush.action.INTERNAL_PUSH_MESSAGE" /> <!-- 【必须】 系统广播:开屏和网络切换 --> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <!-- 【可选】 一些常用的系统广播,增强信鸽service的复活机会,请根据需要选择。当然,你也可以添加APP自定义的一些广播让启动service --> <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" /> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> </intent-filter> <!-- 【可选】 usb相关的系统广播,增强信鸽service的复活机会,请根据需要添加 --> <intent-filter android:priority="0x7fffffff"> <action android:name="android.intent.action.MEDIA_UNMOUNTED" /> <action android:name="android.intent.action.MEDIA_REMOVED" /> <action android:name="android.intent.action.MEDIA_CHECKING" /> <action android:name="android.intent.action.MEDIA_EJECT" /> <data android:scheme="file" /> </intent-filter> </receiver> <!-- 【必须】 (2.30及以上版新增)展示通知的activity --> <!-- 【注意】 如果被打开的activity是启动模式为SingleTop,SingleTask或SingleInstance,请根据通知的异常自查列表第8点处理--> <activity android:name="com.tencent.android.tpush.XGPushActivity" android:exported="false" android:theme="@android:style/Theme.Translucent"> <intent-filter> <!-- 若使用AndroidStudio,请设置android:name="android.intent.action"--> <action android:name="android.intent.action" /> </intent-filter> </activity> <!-- 【必须】 信鸽service --> <service android:name="com.tencent.android.tpush.service.XGPushService" android:exported="true" android:persistent="true" android:process=":xg_service_v2" /> <!-- 【必须】 通知service,此选项有助于提高抵达率 --> <service android:name="com.tencent.android.tpush.rpc.XGRemoteService" android:exported="true"> <intent-filter> <action android:name="*****.PUSH_ACTION" /> </intent-filter> </service> <!-- 【必须】 请将YOUR_ACCESS_ID修改为APP的AccessId,“21”开头的10位数字,中间没空格 --> <meta-data android:name="XG_V2_ACCESS_ID" android:value="********" /> <!-- 【必须】 请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 --> <meta-data android:name="XG_V2_ACCESS_KEY" android:value="********" /> </application>
注册信鸽
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Context context = getApplicationContext(); XGPushManager.registerPush(this, new XGIOperateCallback() {//注册信鸽 @Override public void onSuccess(Object data, int flag) { Log.d("TPush", "注册成功,设备token为:" + data); } @Override public void onFail(Object data, int errCode, String msg) { Log.d("TPush", "注册失败,错误码:" + errCode + ",错误信息:" + msg); } }); // 2.36(不包括)之前的版本需要调用以下2行代码 Intent service = new Intent(context, XGPushService.class); context.startService(service);
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent);// 必须要调用这句 }