你的位置:首页 > 操作系统

[操作系统]推送:腾迅信鸽 VS Bmob


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

腾迅信鸽

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

 完整的清单文件如下:

 1 <??> 2 <manifest ="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-data103       android:name="XG_V2_ACCESS_ID"104       android:value="你的ACCESS_ID" />105     <!-- 【必须】 请将YOUR_ACCESS_KEY修改为APP的AccessKey,“A”开头的12位字符串,中间没空格 -->106     <meta-data107       android:name="XG_V2_ACCESS_KEY"108       android:value="你的ACCESS_KEY" />109   </application>110 111 </manifest>

View Code

MainActivity中配置如下:

1   @Override2   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 <??> 2 <manifest ="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   <permission13     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   <application30     android:allowBackup="true"31     android:icon="@drawable/ic_launcher"32     android:label="@string/app_name"33     android:theme="@style/AppTheme" >34     <activity35       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     <service46       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 // 初始化BmobSDK2   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 = intent10           .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 message27   */28   @SuppressWarnings("deprecation")29   private void SendNotification(String message) {30     // 点击之后执行的Intent31     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_SOUND39         | Notification.DEFAULT_VIBRATE;// 设置默认为系统声音40     notification.flags = Notification.FLAG_AUTO_CANCEL;// 点击后自动消失41     notification.setLatestEventInfo(mContext, "推送消息", message,42         pendingIntent);43     NotificationManager mManager = (NotificationManager) mContext44         .getSystemService(Context.NOTIFICATION_SERVICE);45     mManager.notify(1, notification);46 47   }48 }

View Code