安卓进阶第三篇之腾讯信鸽推送的简单使用

由于Android暂时没办法使用系统级的推送服务,再加上千奇百怪的第三方rom,所以我们不得不选择一款成
熟的第三方平台做我们的推送服务。现在市场上的推送平台很多,比如信鸽、极光、小米、友盟、阿里推送等,由于自己的项目中使用的是信鸽推送,所以我就简单说说使用信鸽推送的流程。

1.首先第一步,在信鸽官网 (http://xg.qq.com)注册账号并登录,然后点击“介入推送应用”

登录成功后就可以看到

2.输入应用名称、包名并选择所属分类,点击“接入应用”

安卓进阶第三篇之腾讯信鸽推送的简单使用_第1张图片
注意:包名不要写错

3.提示成功之后在应用列表界面就可以看到创建的应用了

新创建的应用

4.创建好了应用,接下来就是在项目中的使用了,首先下载信鸽的sdk

点击下载sdk

5.解压sdk

安卓进阶第三篇之腾讯信鸽推送的简单使用_第2张图片

6.先看看注意事项,毕竟都写了“必读”是吧(一定要看哈!)

7.集成到项目中也很简单,打开官方文档
http://developer.xg.qq.com/wiki/xg/Android%E6%8E%A5%E5%85%A5/Android%20SDK%E5%BF%AB%E9%80%9F%E6%8E%A5%E5%85%A5/Android%20SDK%E5%BF%AB%E9%80%9F%E6%8E%A5%E5%85%A5.html
按照流程一步一步来,文档是已eclipse为例,那现在很多开发者都使用的是Android Studio,那我们就以AS为例:

(1).将信鸽 SDK目录下的libs目录所有文件拷贝到工程的libs目录下并导入项目

安卓进阶第三篇之腾讯信鸽推送的简单使用_第3张图片

(2).添加.so文件

拷贝这个目录下所有的文件
安卓进阶第三篇之腾讯信鸽推送的简单使用_第4张图片
将拷贝的文件放到jinLibs文件夹下面

(3).打开Androidmanifest.xml,添加以下配置(建议参考下载的sdk里面demo的配置文件)


    
    
    
    
    
    
    
     
    
    
    
    
    
    
    
    
    
    
    
  
        
            
                 
                
            
        

        
        
            

                
                
                
                
                
                
                
                

                
                
                
                
            
            
            
                
                
                
                

                
            
        
        
        

        
        
            
                 
                
            
        
        
        
        
        
        
        
        
        
            
                
                
                
                
            
        

        
        
        
        

注意上面的注释,自己看,需要修改的地方已经写的很清楚了。

(4).启动并注册APP,打开工程的主Activity,在其onCreate(Bundle savedInstanceState)重载方法内,添加以下代码,完成信鸽服务的启动与APP注册过程(当然不是非要写在oncreate方法里面,根据自己的项目需要,自己可以修改位置)。

/** 
* 账号注册信鸽推送 
*/
private void getXGPushReceiver() {  
Context context = getApplicationContext();    
final PreferenceStorage ps = new PreferenceStorage(context);    
// 开启logcat输出,方便debug,发布时请关闭   
XGPushConfig.enableDebug(this, true);    
// 获取信鸽token   
XGPushManager.registerPush(context, ps.getUsername(),     new XGIOperateCallback() {                           @Override                
public void onSuccess(Object data, int flag) 
  {                  
   String mToken = (String) data;                                    
   LogUtils.d("TPush", "获取token:" + mToken);                    
  }                
 @Override               
 public void onFail(Object data, int errCode, String msg) 
  {                   
   Log.d(TAG, "获取token失败:");   
  }            
});  
 //(2.36之前的版本)已知MIUI V6上会禁用所有静态广播,若出现有类似的情况,请添加以下代码兼容该系统。   
 Intent service = new Intent(context, XGPushService.class);    context.startService(service);}

我这里选择的是使用账号进行注册,当然也可以选择使用APP进行注册(只需要修改注册的方法XGPushManager.registerPush(context)),不传用户名就可以啦,那么两种不同的注册方式有什么区别呢,我是这么理解的,如果使用账号进行注册,则只有这个账号登录后才可以收到推送,如果使用APP注册,则不管是哪个账号登录的,都可以收到推送。

(5).代码嵌入完成后,启动APP,如果在logcat中的TPush标签看到以下类似的输出,说明已经注册成功,并返回token。注意:Android Token长度为40位

(6).去管理台推送验证
前往信鸽前台,选择“创建通知”,输入“标题”和“内容”,点击“确认推送”。稍等几秒后,如果顺利的话,终端设备应该能够收到这条通知。此时,APP已经具备接收通知推送的能力。

(7) .可能碰到的问题解决方法
1.设备是否正常联网?
2.检查AndroidManifest.xml是否配置正确?(建议直接参考demo的例子改)

  • accessId、accessKey设置是否与前台注册的一致?
  • 相关权限是否齐全?
  • receiver、service和activity相关组件是否配置好?

3.设备是否注册成功?
4.当前APP包名是否与前台注册的一致,如果不一致请在前台选中“使用多包名”选项?
5.前台下发通知时,“时段控制”选项里的时间段是否符合终端设备当前时间?
6.2.30及以上版本请检查xml配置文件是否添加com.tencent.android.tpush.XGPushActivity相关的内容
7.停留在后台的APP点击通知不能打开APP:被打开的activity(特别是LAUNCHER)启动模式为SingleTop,SingleTask或SingleInstance,请在该activity重载onNewIntent方法:

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);// 必须要调用这句
}

8.对于使用AndriodStudio的同学,若AndroidManifest.xml编译不通过,XGPushActivity配置改为:


9.请检查AndroidManifest.xml是否已正确配置XGRemoteService,且intent-filter中是否正确设置:

应用包名为当前APP包名,如com.tencent.xgdemo

10.是否已设置APP默认的icon?由于系统原因,若没有icon,通知将不能展示。
11.(2.36之前的版本)已知MIUI V6上会禁用所有静态广播,若出现有类似的情况,请添加以下代码兼容该系统。

// 在XGPushManager.registerPush(context)或其它版本的注册接口之后调用以下代码
// 使用ApplicationContext
Context context = getApplicationContext();
Intent service = new Intent(context, XGPushService.class);
context.startService(service);

12.点击通知,出现不能打开activity的情况,请在AndroidManifest.xml中将XGPushActivity的exported属性设置为true。
13.点击通知,出现重复打开APP的情况,请将被打开的Activity启动模式改为SingleTop,SingleTask或SingleInstance。

差不多就是这么多了,如果还需要更多的高级功能, 可以再仔细看看 《SDK开发指南》,其实文档已经写得很详细了,只要我们仔细阅读文档,实现我们想要的功能还是不难的。

你可能感兴趣的:(安卓进阶第三篇之腾讯信鸽推送的简单使用)