APNS 是什么?
APNS (Android Push Notification Service) 是一種在 android 上輕松實現 push notification 的功能的解決方案. 只需申請一個 API Key, 經過簡單的步驟即可實現 push notification 的功能.
特點:
快速集成:提供一種比C2DM更加快捷的使用方式,避免各種限制.無需架設服務器:通過使用"云服務",減少額外服務器負擔.可以同時推送消息到網站頁面,android 手機耗電少,占用流量少.
http://zen-mobi.com/get_api_key.php獲取apikey
如何在 Android 應用中使用 Notification ?
a) 在應用中添加 APNS 功能
- 下載 libaray: com_apns.jar
- 將com_apns.jar添加到工程
在工程上右鍵打開“屬性”,選擇 “Java Build Path”, 在 Libraries 中選擇 “Add External JARs”, 選擇下載的 com_apns.jar.
- 接收 push notification
使用BroadcastReceiver接收系統廣播: public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(APNService.ON_NOTIFICATION)) { String str = intent.getStringExtra("data"); //todo, 處理收到的消息 } } }
- 啟動 Push Notification Service
發送Intent 啟動服務,將 chanel Id 以及 此設備的標識 (chanel中唯一表示此設備的字符串) 傳遞過去: Intent intent = new Intent(APNService.START); intent.putExtra("ch", chanel); intent.putExtra("devId", devId); startService(intent);
Notes Chanel Id 在申請 API 后,登錄開發者頁面會看到. devId: chanel 內設備標識,要在chanel內保持唯一.- 配置 AndroidManifest.xml
... <application android:icon="@drawable/icon" ... <service android:name="com.apns.APNSService" android:label="APNS"> <intent-filter> <action android:name="com.apns.APNService.START" /> <action android:name="com.apns.APNService.STOP" /> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </service> <receiver android:name="MyBroadcastReceiver"> <intent-filter> <action android:name="com.apnsd.APNService.NOTIFICATION" /> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ...
b) 發送 Notification 到設備
通過 rest 接口發送 Notification:
http://www.push-notification.org/handlers/apns_v1.php?ch=YourChannelId&devId=xxxxx&msg =hello world&random=0123&hash=HashCode
ch:Channel Id devId:接收設備 Id msg:消息 random:隨機數 hash:md5(ch + devId + msg + random + apiKey)
posted on 2012-07-21 22:15
zhanghu198901 閱讀(1745)
評論(1) 編輯 收藏