推送MobPush-API說明
1. 訊息監聽介面
MobPushReceiver: 訊息監聽介面(包含接收自定義訊息、通知訊息、通知欄點選事件、別名和標籤變更操作等)
MobPush.addPushReceiver(MobPushReceiver receiver): 設定訊息監聽
MobPush.removePushReceiver(MobPushReceiver receiver): 移除訊息監聽
2. 推送開關控制介面
MobPush.stopPush(): 停止推送(停止後將不會收到推送訊息,僅可通過restartPush重新開啟)
MobPush.restartPush(): 重新開啟推送服務
MobPush.isPushStopped(): 判斷推送服務是否已經停止
3. 推送選項介面
MobPush.setSilenceTime(int startHour, int startMinute, int endHour, int endMinute): 設定通知靜音時段(開始時間小時和分鐘、結束時間小時和分鐘)
MobPush.setCustomNotification(MobPushCustomNotification customNotification): 設定自定義通知樣式
4. 業務介面
MobPush.getRegistrationId(MobPushCallback<String> callback)
別名操作:(同時只能設定一個別名,可用來標識一個使用者)
MobPush.setAlias(String alias):設定別名
MobPush.getAlias():獲取當前設定的別名
MobPush.deleteAlias():刪除別名
標籤操作:(同時可設定多個標籤,可用於多使用者訂閱標籤的方式,批量推送訊息)
MobPush.addTags(String[] tags):新增標籤
MobPush.getTags():獲取所有已新增的標籤
MobPush.deleteTags(String[] tags)
MobPush.cleanTags():清除所有已新增的標籤
MobPushCustomeMessage: 自定義訊息實體類
MobPushNotifyMessage: 通知訊息實體類
5. 本地通知
MobPush.addLocalNotification(MobPushLocalNotification notification):新增本地通知
MobPush.removeLocalNotification(int notificationId):移除本地通知
MobPush.clearLocalNotifications():清空本地通知
MobPushLocalNotification:本地通知訊息實體類,繼承MobPushNotifyMessage
6. API錯誤碼
API返回的錯誤碼說明如下:(詳見MobPushErrorCode.java說明)
-1 網路請求失敗
-2 請求錯誤
功能自定義和擴充套件
前言:此功能僅僅是針對push的一些使用場景而進行自定義設定。比如,通知被點選的時候:
方式一、通過介面uri進行link跳轉
首先現在Manifest檔案中進行目標Activity的uri設定,如下:
activity
android:name=".LinkActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="com.mob.mobpush.link"
android:scheme="mlink" />
</intent-filter>
</activity>
在Mob後臺進行推送時,通過scheme://host的格式,例如mlink://com.mob.mobpush.link,如下位置填入:
配置好之後,推送就App就可以接收到推送直接開啟指定的Activity介面了。
方式二、當app顯示在前臺的時候,會觸發MobPushReceiver的onNotifyMessageOpenedReceive方法,MobPushNotifyMessage引數則是回撥的通知詳情,可以根據回撥引數進行處理(不建議使用,當程序被殺掉的情況下,啟動應用後可能無法執行到回撥方法,因為此時可能還執行到未新增監聽的程式碼);
方式三、不管app程序是否被殺掉,當點選通知後拉起應用的啟動頁面,會觸發啟動Activity的OnCreate或OnNewIntent方法,通過getIntent方法拿到回傳的Intent,遍歷getExtras,可以拿到通知詳情(建議使用);
根據方式二,MobPush以兩個場景為例子:
場景一、通過擴充套件引數實現頁面的自定義跳轉:
//自定義擴充套件欄位的key,下發通知的時候,在擴充套件欄位使用這個key
private final static String MOB_PUSH_DEMO_INTENT = "intent";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dealPushResponse(getIntent());
}
protected void onNewIntent(Intent intent) {
dealPushResponse(intent);
//需要呼叫setIntent方法,不然後面獲取到的getIntent都是上一次傳的資料
setIntent(intent);
}
//OnCreate和OnNewIntent方法都要同時處理這個邏輯
private void dealPushResponse(Intent intent) {
Bundle bundle = null;
if (intent != null) {
bundle = intent.getExtras();
if (bundle != null) {
Set<String> keySet = bundle.keySet();
for (String key : keySet) {
if (key.equals("msg")) {
MobPushNotifyMessage notifyMessage = (MobPushNotifyMessage) bundle.get(key);
HashMap<String, String> params = notifyMessage.getExtrasMap();
if(params != null && params.containsKey(MOB_PUSH_DEMO_INTENT)){
//此處跳轉到指定頁面
openPage(params);
}
}
}
}
}
}
private void openPage(HashMap<String, String> params){
Intent intent = new Intent(this, JumpActivity.class);
intent.putExtra("key1", "value1");
intent.putExtra("key2", "value2");
intent.putExtra("key3", "value3");
//如上Intent,在intent.toURI();之後得到的String,如下所示,可利用這個方法識別Intent傳的引數,
//下發的引數可以按照下面的格式傳,客戶端接收後再轉成Intent,若新增action等其他引數,可自行列印看Srting結構體;
//#Intent;component=com.mob.demo.mobpush/.JumpActivity;S.key1=value1;S.key2=value2;S.key3=value3;end
String uri;
if(!TextUtils.isEmpty(params.get(MOB_PUSH_DEMO_INTENT))) {
uri = params.get(MOB_PUSH_DEMO_INTENT);
try {
startActivity(Intent.parseUri(uri, 0));
} catch (Throwable t){
t.printStackTrace();
}
}
}
場景二、通過擴充套件引數實現web介面的跳轉:
程式碼同場景一一樣,跳轉頁面的方法改成跳轉webview頁面就可以,通過引數識別,拿到需要跳轉的Url連結
private final static String MOB_PUSH_DEMO_URL = "url";
//OnCreate和OnNewIntent方法都要同時處理這個邏輯
private void dealPushResponse(Intent intent) {
Bundle bundle = null;
if (intent != null) {
bundle = intent.getExtras();
if (bundle != null) {
Set<String> keySet = bundle.keySet();
for (String key : keySet) {
if (key.equals("msg")) {
MobPushNotifyMessage notifyMessage = (MobPushNotifyMessage) bundle.get(key);
HashMap<String, String> params = notifyMessage.getExtrasMap();
if(params != null && params.containsKey(MOB_PUSH_DEMO_URL)){
//此處跳轉到webview頁面
openUrl(params);
}
}
}
}
}
}
private void openUrl(HashMap<String, String> params){
String url;
if(!TextUtils.isEmpty(params.get(MOB_PUSH_DEMO_URL))) {
url = params.get(MOB_PUSH_DEMO_URL);
} else {
url = "http://m.mob.com";
}
if(!url.startsWith("http://") && !url.startsWith("https://")){
url = "http://" + url;
}
System.out.println("url:" + url);
//以下程式碼為開發者自定義跳轉webview頁面,貼上使用會找不到相關類
WebViewPage webViewPage = new WebViewPage();
webViewPage.setJumpUrl(url);
webViewPage.show(this, null);
}
上面兩個場景的使用示例程式碼,可以參考官方demo
https://github.com/MobClub/MobPush-for-Android