轉移自 LogDown 原文日期 May 30, 2014 10:14
之前介紹過用 Parse 來做 push,這次換成另一家服務廠商。
Lightspeed 官網: http://www.lightspeedmbs.com/。
它是由 arrownock 延伸而來的,專職於推播和即時訊息。
SDK 和官方說明文件必須註冊後才能取得。
目前筆者主攻 Android ,所以以下都針對 Android 開發部分介紹。
它的推播可以用 gcm 的方式也可以用 Lightspeed 自己的服務,筆者採用的是後者。
官方文件 提供的是 SDK 裡面 method 的用法。
官方導引頁面 已經有一陣子未更新,所以有些部分已不符合現況,比如說管理控制台裡面並沒有地方可以設定 Android App package 。
將下載好的 SDK ,也就是 jar 檔,放到專案的 libary 資料夾。
因為它的啟動是放在整個應用裡,所以要先新建一個 MyApplication.java 檔案。
值得注意的是: 註冊的頻道至少要有一個,否則會註冊無效。 筆者曾經痛苦的卡在這裡。
MyApplication.java public class MyApplication extends android.app.Application { @Override public void onCreate() { super.onCreate(); List channels = new ArrayList(); //must at least one channel channels.add("android"); try { /* * connection default use https, if devices not support, do this * AnPush.getInstance(getBaseContext()).setSecureConnection(false); */ AnPush.getInstance(getBaseContext()).register(channels); AnPush.getInstance(getBaseContext()).enable(); } catch (ArrownockException ex) { Log.e(TAG, ex.getMessage()); } } }
別忘了建立好之後在 AndroidManifest.xml 的 application 標簽裡加上去。
AndroidManifest.xml <application ...... android:name=".MyApplication" >
啟動完成再來就是設定接收 push 的部分了,請加在 AndroidManifest.xml 裡的 application 標簽之間。
MainActivity 的部分要換成負責接收的 Activity 全路徑,比如說: com.example.MainActivity
arrownock_key 的部分請填從網頁(路徑一般是/settings/keys)拿到的 key 。
AndroidManifest.xml <meta-data android:name="com.arrownock.push.SERVICE_TYPE" android:value="ARROWNOCK" /> <meta-data android:name="com.arrownock.APP_KEY" android:value="arrownock_key"/> <meta-data android:name="com.arrownock.push.KEEPALIVE_INTERVAL_WIFI" android:value="14" /> <meta-data android:name="com.arrownock.push.KEEPALIVE_INTERVAL_2G" android:value="4" /> <meta-data android:name="com.arrownock.push.KEEPALIVE_INTERVAL_3G" android:value="4" /> <service android:name="com.arrownock.push.PushService" /> <receiver android:name="com.arrownock.push.PushBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="com.arrownock.push.PushService.MSG_ARRIVAL" /> <category android:name="android.intent.category.HOME" /> </intent-filter> <meta-data android:name="com.arrownock.push.BroadcastReceiver.ArrivalActivity" android:value="MainActivity" /> </receiver>
最後是打開權限,加在 AndroidManifest.xml 裡的 manifest 標簽之間。
AndroidManifest.xml <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
趕快去測試是不是已經可以收到推播啦!