推送:腾迅信鸽 VS Bmob

最近几天了解市场上主流的推送SDK。

腾迅信鸽

所需SDK,去官网自行下载。去下载

 完整的清单文件如下:

  1 <?xml version="1.0" encoding="utf-8"?>
  2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3     package="你的包名"
  4     android:versionCode="1"
  5     android:versionName="1.0" >
  6 
  7     <uses-sdk
  8         android:minSdkVersion="8"
  9         android:targetSdkVersion="19" />
 10     <!-- 【必须】 信鸽SDK所需权限 -->
 11     <uses-permission android:name="android.permission.INTERNET" />
 12     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 13     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 14     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 15     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
 16     <uses-permission android:name="android.permission.RESTART_PACKAGES" />
 17     <uses-permission android:name="android.permission.BROADCAST_STICKY" />
 18     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
 19     <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
 20     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 21     <uses-permission android:name="android.permission.WAKE_LOCK" />
 22     <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
 23     <uses-permission android:name="android.permission.GET_TASKS" />
 24     <uses-permission android:name="android.permission.READ_LOGS" />
 25     <uses-permission android:name="android.permission.VIBRATE" />
 26     <!-- 【可选】 信鸽SDK所需权限 -->
 27     <uses-permission android:name="android.permission.BLUETOOTH" />
 28     <uses-permission android:name="android.permission.BATTERY_STATS" />
 29 
 30     <application
 31         android:allowBackup="true"
 32         android:icon="@drawable/ic_launcher"
 33         android:label="@string/app_name"
 34         android:theme="@style/AppTheme" >
 35         <activity
 36             android:name="你的包名.MainActivity"
 37             android:label="@string/app_name" >
 38             <intent-filter>
 39                 <action android:name="android.intent.action.MAIN" />
 40 
 41                 <category android:name="android.intent.category.LAUNCHER" />
 42             </intent-filter>
 43         </activity>
 44         <!-- 【必须】 信鸽receiver广播接收 -->
 45         <receiver
 46             android:name="com.tencent.android.tpush.XGPushReceiver"
 47             android:process=":xg_service_v2" >
 48             <intent-filter android:priority="0x7fffffff" >
 49 
 50                 <!-- 【必须】 信鸽SDK的内部广播 -->
 51                 <action android:name="com.tencent.android.tpush.action.SDK" />
 52                 <action android:name="com.tencent.android.tpush.action.INTERNAL_PUSH_MESSAGE" />
 53                 <!-- 【必须】 系统广播:开屏和网络切换 -->
 54                 <action android:name="android.intent.action.USER_PRESENT" />
 55                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
 56 
 57                 <!-- 【可选】 一些常用的系统广播,增强信鸽service的复活机会,请根据需要选择。当然,你也可以添加APP自定义的一些广播让启动service -->
 58                 <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
 59                 <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
 60                 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
 61             </intent-filter>
 62             <!-- 【可选】 usb相关的系统广播,增强信鸽service的复活机会,请根据需要添加 -->
 63             <intent-filter android:priority="0x7fffffff" >
 64                 <action android:name="android.intent.action.MEDIA_UNMOUNTED" />
 65                 <action android:name="android.intent.action.MEDIA_REMOVED" />
 66                 <action android:name="android.intent.action.MEDIA_CHECKING" />
 67                 <action android:name="android.intent.action.MEDIA_EJECT" />
 68 
 69                 <data android:scheme="file" />
 70             </intent-filter>
 71         </receiver>
 72 
 73         <!-- 【必须】 (2.30及以上版新增)展示通知的activity -->
 74         <!-- 【注意】 如果被打开的activity是启动模式为SingleTop,SingleTask或SingleInstance,请根据通知的异常自查列表第8点处理 -->
 75         <activity
 76             android:name="com.tencent.android.tpush.XGPushActivity"
 77             android:exported="true" >
 78             <intent-filter>
 79 
 80                 <!-- 若使用AndroidStudio,请设置android:name="android.intent.action" -->
 81                 <action android:name="" />
 82             </intent-filter>
 83         </activity>
 84 
 85         <!-- 【必须】 信鸽service -->
 86         <service
 87             android:name="com.tencent.android.tpush.service.XGPushService"
 88             android:exported="true"
 89             android:persistent="true"
 90             android:process=":xg_service_v2" />
 91 
 92         <!-- 【必须】 通知service,此选项有助于提高抵达率 -->
 93         <service
 94             android:name="com.tencent.android.tpush.rpc.XGRemoteService"
 95             android:exported="true" >
 96             <intent-filter>
 97                 <action android:name="你的包名.PUSH_ACTION" />
 98             </intent-filter>
 99         </service>
100 
101         <!-- 【必须】 请将YOUR_ACCESS_ID修改为APP的AccessId,“21”开头的10位数字,中间没空格 -->
102         <meta-data
103             android:name="XG_V2_ACCESS_ID"
104             android:value="你的ACCESS_ID" />
105         <!-- 【必须】 请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 -->
106         <meta-data
107             android:name="XG_V2_ACCESS_KEY"
108             android:value="你的ACCESS_KEY" />
109     </application>
110 
111 </manifest>
View Code

MainActivity中配置如下:

1     @Override
2     protected void onCreate(Bundle savedInstanceState) {
3         super.onCreate(savedInstanceState);
4         setContentView(R.layout.activity_main);
5         XGPushManager.registerPush(this);
6         // // 2.36(不包括)之前的版本需要调用以下2行代码
7         // Intent service = new Intent(this, XGPushService.class);
8         // startService(service);
9     }
View Code

相当Easy吧,如果过程无误,就可以正常推送了。

 

Bmob

Bmob配置过程相对信鸽来说稍微复杂一点,缺点就是需要自己在自定义Receiver里接收推送消息,自己发送通知,但可定制性也较强。 

所需SDK,去官网自行下载。去下载

 完整的清单文件如下:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="你的包名"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6 
 7     <uses-sdk
 8         android:minSdkVersion="8"
 9         android:targetSdkVersion="19" />
10 
11     <!-- BmobPush SDK权限 -->
12     <permission
13         android:name="cn.bmob.permission.push"
14         android:protectionLevel="normal" >
15     </permission>
16 
17     <uses-permission android:name="cn.bmob.permission.push" /> <!-- 添加自定义的权限 -->
18     <uses-permission android:name="android.permission.READ_LOGS" />
19     <uses-permission android:name="android.permission.INTERNET" />
20     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
21     <uses-permission android:name="android.permission.WAKE_LOCK" />
22     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
23     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
24     <uses-permission android:name="android.permission.VIBRATE" />
25     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
26     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
27     <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
28 
29     <application
30         android:allowBackup="true"
31         android:icon="@drawable/ic_launcher"
32         android:label="@string/app_name"
33         android:theme="@style/AppTheme" >
34         <activity
35             android:name="你的包名.MainActivity"
36             android:label="@string/app_name"
37             android:launchMode="singleTop" >
38             <intent-filter>
39                 <action android:name="android.intent.action.MAIN" />
40 
41                 <category android:name="android.intent.category.LAUNCHER" />
42             </intent-filter>
43         </activity>
44 
45         <service
46             android:name="cn.bmob.push.lib.service.PushService"
47             android:exported="true"
48             android:label="PushService"
49             android:permission="cn.bmob.permission.push"
50             android:process="cn.bmob.push" >
51             <intent-filter>
52                 <action android:name="cn.bmob.push.lib.service.PushService" />
53             </intent-filter>
54         </service>
55 
56         <receiver android:name="cn.bmob.push.PushReceiver" >
57             <intent-filter android:priority="2147483647" > <!-- 优先级加最高 -->
58                 <!-- 系统启动完成后会调用 -->
59                 <action android:name="android.intent.action.BOOT_COMPLETED" />
60                 <!-- 解锁完成后会调用 -->
61                 <action android:name="android.intent.action.USER_PRESENT" />
62                 <!-- 监听网络连通性 -->
63                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
64             </intent-filter>
65         </receiver>
66         <!-- 第四部中创建的消息接收器,在这里进行注册 -->
67         <receiver android:name="你的包名.MyPushMessageReceiver" >
68             <intent-filter>
69                 <action android:name="cn.bmob.push.action.MESSAGE" />
70             </intent-filter>
71         </receiver>
72     </application>
73 
74 </manifest>
View Code

MainActivity中配置如下:

1  // 初始化BmobSDK
2     Bmob.initialize(this, "你的AppKey");
3     // 使用推送服务时的初始化操作
4     BmobInstallation.getCurrentInstallation(this).save();
5     // 启动推送服务
6     BmobPush.startWork(this, "你的AppKey");
View Code

 MyPushMessageReceiver完整代码如下:

 1 public class MyPushMessageReceiver extends BroadcastReceiver {
 2 
 3     private Context mContext;
 4 
 5     @Override
 6     public void onReceive(Context context, Intent intent) {
 7         mContext = context;
 8         if (intent.getAction().equals(PushConstants.ACTION_MESSAGE)) {
 9             String jsonstr = intent
10                     .getStringExtra(PushConstants.EXTRA_PUSH_MESSAGE_STRING);
11             String msg = "";
12             try {
13                 JSONObject object = new JSONObject(jsonstr);
14                 msg = object.getString("alert");
15             } catch (JSONException e) {
16                 e.printStackTrace();
17             }
18 
19             SendNotification(msg);
20         }
21     }
22 
23     /**
24      * 发送通知
25      * 
26      * @param message
27      */
28     @SuppressWarnings("deprecation")
29     private void SendNotification(String message) {
30         // 点击之后执行的Intent
31         Intent intent = new Intent(mContext, MainActivity.class);
32         PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0,
33                 intent, 0);
34         Notification notification = new Notification();
35         notification.icon = R.drawable.ic_launcher;
36         notification.tickerText = "收到消息推送";
37         notification.when = System.currentTimeMillis();
38         notification.defaults = Notification.DEFAULT_SOUND
39                 | Notification.DEFAULT_VIBRATE;// 设置默认为系统声音
40         notification.flags = Notification.FLAG_AUTO_CANCEL;// 点击后自动消失
41         notification.setLatestEventInfo(mContext, "推送消息", message,
42                 pendingIntent);
43         NotificationManager mManager = (NotificationManager) mContext
44                 .getSystemService(Context.NOTIFICATION_SERVICE);
45         mManager.notify(1, notification);
46 
47     }
48 }
View Code

 

posted @ 2015-11-24 12:00  望臻风格  阅读(468)  评论(0编辑  收藏  举报