腾讯信鸽推送集成经验

////////////////////////2016/03/11//////////////////////////

///////////////////////by xbw/////////////////////////////////

//////////////////eclipse 信鸽sdk v2.42//////////////

好久没来写csdn博客了,因为开了个小站,在此宣传一下吧,xbwcc.com.cn

在最近做的app中出现了很多问题,同时积累了不少经验,慢慢来,一个个说,先说一下这个腾讯的信鸽推送,推送的作用不容小觑,虽然本人把各种app的推送消息屏蔽了,但是自己的app也要稍微骚扰一下自己,嘿嘿。

首先去腾讯信鸽官网注册信息,注意,包名一定要跟安卓项目的包名一至,否则会推送失败,这是理所当然的,身份证错了就不会找到当事人。

上图

这个Access ID跟Access KEY复制下来一会将填入AndroidManifest.xml配置文件中,

接着,我们需要下载sdk  传送门

下载的sdk目录结构,我们找到libs文件,打开,把里边的东西复制到自己安卓项目的libs库中,同时把

这四个文件右键一下,构建路径–>重新构建路径,这样就好了,我们开始配置AndroidManifest.xml文件,

<application
   <!-- APP项目的其它配置... -->
 
   <!-- 【必须】 信鸽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>
    </receiver>
 
    <!-- 【必须】 (2.30及以上版新增)展示通知的activity -->
    <!-- 【注意】 如果被打开的activity是启动模式为SingleTop,SingleTask或SingleInstance,请根据通知的异常自查列表第8点处理-->
     <activity
         android:name="com.tencent.android.tpush.XGPushActivity"
         android:exported="false" >
         <intent-filter>
            <!-- 若使用AndroidStudio,请设置android:name="android.intent.action"-->
             <action android:name="" />
         </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_ID" />
    <!-- 【必须】 请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 -->
    <meta-data 
        android:name="XG_V2_ACCESS_KEY"
        android:value="YOUR_ACCESS_KEY" />
</application>
 
<!-- 【必须】 信鸽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" />

 

需要修改的地方就修改一下,把刚才的id 跟key替换进来,同时修改一下包名

这样就好了,现在我们去主activity中添加注册代码,我的主activity是splashactivity就是启动界面,

在其onCreate(Bundle savedInstanceState)重载方法内,添加以下代码,完成信鸽服务的启动与APP注册过程。

// 开启logcat输出,方便debug,发布时请关闭
// XGPushConfig.enableDebug(this, true);
// 如果需要知道注册是否成功,请使用registerPush(getApplicationContext(), XGIOperateCallback)带callback版本
// 如果需要绑定账号,请使用registerPush(getApplicationContext(),account)版本
// 具体可参考详细的开发指南
// 传递的参数为ApplicationContext
Context context = getApplicationContext();
XGPushManager.registerPush(context);    
 
// 2.36(不包括)之前的版本需要调用以下2行代码
Intent service = new Intent(context, XGPushService.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)

这样就好了,我们测试一下吧。

好了,你们也试试吧,在此吐槽一下360的大无线路由器,这个网速死坑死坑的。