一、去官网下载信鸽sdk http://xg.qq.com/xg/ctr_index/download
二、将sdk集成到自己Android项目中:
1.将信鸽 SDK目录下的libs目录所有文件拷贝到工程的libs(或lib)目录下,注意,libs目录下包含android-support-v4.jar,如果build.gradle已添加此包的依赖则不用导入此包,否则会报如下错误:Process 'command 'C:\Program Files\Java\jdk1.7.0_79\bin\java.exe'' finished with non-zero exit value 2。
2.导入so库,在module的build.gradle文件中指定lib库目录
sourceSets {//目录指向配置
main {
jniLibs.srcDirs = ['libs']//指定lib库目录
}
}
3.在信鸽官网中进行注册,并创建自己的应用,得到APP的AccessId和AccessKey。
4.打开Androidmanifest.xml,添加配置,可仿照sdk中的官方demo进行配置,示例如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.czy.myapplication">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
<!-- 【必须】 信鸽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.WRITE_EXTERNAL_STORAGE" />
<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" />
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".activity.MainActivity"
android:theme="@style/AppTheme.NoActionBar"
android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="portrait">
<!-- 自定义搜索视图-->
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
</activity>
<!-- android:configChanges="orientation|screenSize"-->
<activity
android:name=".activity.PlayActivity"
android:label="@string/title_activity_main2"
android:configChanges="orientation|screenSize"
android:theme="@style/AppTheme.NoActionBar"></activity>
<!-- 【必须】 (2.30及以上版新增)展示通知的activity -->
<activity
android:name="com.tencent.android.tpush.XGPushActivity"
android:theme="@android:style/Theme.Translucent"
android:exported="false" >
<intent-filter>
<!-- 若使用AndroidStudio,请设置android:name="android.intent.action"-->
<!--<action android:name="" />-->
<action android:name="android.intent.action" />
</intent-filter>
</activity>
<!-- 【必须】 信鸽receiver广播接收 -->
<receiver
android:name="com.tencent.android.tpush.XGPushReceiver"
android:process=":xg_service_v3" >
<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.net.conn.CONNECTIVITY_CHANGE" />
<!-- 【可选】 系统广播:开屏 -->
<action android:name="android.intent.action.USER_PRESENT" />
<!-- 【可选】 一些常用的系统广播,增强信鸽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>
<!-- 【必须】 信鸽service -->
<service
android:name="com.tencent.android.tpush.service.XGPushServiceV3"
android:exported="true"
android:persistent="true"
android:process=":xg_service_v3" />
<!-- 【必须】 增强xg_service存活率 -->
<service
android:name="com.tencent.android.tpush.service.XGDaemonService"
android:process=":xg_service_v3" />
<!-- 【可选】APP实现的Receiver,用于接收消息透传和操作结果的回调,请根据需要添加 -->
<!-- YOUR_PACKAGE_PATH.CustomPushReceiver需要改为自己的Receiver: -->
<!--<receiver android:name="com.qq.xgdemo.receiver.MessageReceiver"-->
<!--android:exported="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>-->
<!-- 【必须】 【注意】authorities修改为 包名.AUTH_XGPUSH, 如demo的包名为:com.qq.xgdemo-->
<provider
android:name="com.tencent.android.tpush.XGPushProvider"
android:authorities="com.example.czy.myapplication.AUTH_XGPUSH"
android:exported="true"
/>
<!-- 【必须】 【注意】authorities修改为 包名.TPUSH_PROVIDER, 如demo的包名为:com.qq.xgdemo-->
<provider
android:name="com.tencent.android.tpush.SettingsContentProvider"
android:authorities="com.example.czy.myapplication.TPUSH_PROVIDER"
android:exported="false" />
<!-- 【必须】 【注意】authorities修改为 包名.TENCENT.MID.V3, 如demo的包名为:com.qq.xgdemo-->
<provider
android:name="com.tencent.mid.api.MidProvider"
android:authorities="com.example.czy.myapplication.TENCENT.MID.V3"
android:exported="true" >
</provider>
<!-- 【必须】 请将YOUR_ACCESS_ID修改为APP的AccessId,“21”开头的10位数字,中间没空格 -->
<meta-data
android:name="XG_V2_ACCESS_ID"
android:value="2100253994" />
<!-- 【必须】 请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 -->
<meta-data
android:name="XG_V2_ACCESS_KEY"
android:value="ARA8EM8689SZ" />
</application>
</manifest>
完成工程配置后,打开工程的主Activity,在其onCreate(Bundle savedInstanceState)重载方法内,添加以下代码,完成信鸽服务的启动与APP注册过程。
// 开启logcat输出,方便debug,发布时请关闭
// XGPushConfig.enableDebug(this, true);
// 如果需要知道注册是否成功,请使用registerPush(getApplicationContext(), XGIOperateCallback)带callback版本
// 如果需要绑定账号,请使用registerPush(getApplicationContext(),account)版本
// 具体可参考详细的开发指南
// 传递的参数为ApplicationContext
Context context = getApplicationContext();
// XGPushManager.registerPush(context);
XGPushManager.registerPush(context, new XGIOperateCallback()
{
@Override
public void onSuccess(Object data, int flag)
{
Log.w(Constants.LogTag,
"+++ register push sucess. token:" + data);
}
@Override
public void onFail(Object data, int errCode, String msg)
{
Log.w(Constants.LogTag,
"+++ register push fail. token:" + data
+ ", errCode:" + errCode + ",msg:"
+ msg);
}
});
// 2.36(不包括)之前的版本需要调用以下2行代码
Intent service = new Intent(context, XGPushServiceV3.class);
context.startService(service);
// 其它常用的API:
// 绑定账号(别名)注册:registerPush(context,account)或registerPush(context,account, XGIOperateCallback),其中account为APP账号,可以为任意字符串(qq、openid或任意第三方),业务方一定要注意终端与后台保持一致。
// 取消绑定账号(别名):registerPush(context,"*"),即account="*"为取消绑定,解绑后,该针对该账号的推送将失效
// 反注册(不再接收消息):unregisterPush(context)
// 设置标签:setTag(context, tagName)
// 删除标签:deleteTag(context, tagName)
然后,即可运行项目看是否集成成功。
三、在信鸽后台创建通知进行推送,如果手机能收到通知,则表示信鸽集成成功。