204
阿裏雲
SDK API介紹__Android SDK手冊_App SDK 手冊_移動推送-阿裏雲
Android API
Android SDK最新版本v2.3.6。
API索引:
- 1. CloudPushSDK接口
- 2. MessageReceiver相關接口
- 3. 自定義樣式通知相關接口
1. CloudPushService接口
以下接口調用時,如有回調,均為異步執行,且回調不能為空。
1.1基本設置
SDK注冊
- 初始化推送SDK,關聯到雲通道。
參數
- context 應用上下文(需要
ApplicationContext
) - callback 回調
void register(Context context, CommonCallback callback);
啟動信息統計
- 統計App啟動信息。
void onAppStart();
獲取設備標識
- 獲取設備唯一標識。
返回
- 設備唯一標識。
String getDeviceId();
設置日誌等級
- 需要在通道初始化之前設置;
- 默認日誌等級為
CloudPushService.ERROR
;
參數
- logLevel 支持設置:
CloudPushService.ERROR
|CloudPushService.INFO
|CloudPushService.DEBUG
|CloudPushService.OFF
(關閉Log)
void setLogLevel(int logLevel);
動態設置appKey(V2.3.6
及以上版本支持)
- 動態設置appKey無需在manifest配置appKey
- 務必在調用
register
注冊接口之前調用該接口,否則動態設置失效
參數
- appKey 需要設置的appKey
void setAppKey(String appKey);
動態設置appSecret(V2.3.6
及以上版本支持)
- 動態設置appSecret無需在manifest配置appSecret
- 務必在調用
register
注冊接口之前調用該接口,否則動態設置失效
參數
- appSecret 需要設置的appSecret
void setAppSecret(String appSecret);
1.2 賬號API
綁定賬號
- 將應用內賬號和推送通道相關聯,可以實現按賬號的定點消息推送;
- 設備隻能綁定一個賬號,更換綁定賬號時無需進行解綁,重新調用綁定賬號接口即可生效;
- 若業務場景需要先解綁後綁定,在解綁賬號成功回調中進行綁定綁定操作,以此保證執行的順序性;
- 賬戶名設置支持
32
字節。
參數
- account 綁定賬號名
- callback 回調
void bindAccount(String account, CommonCallback callback);
解綁賬號
- 將應用內賬號和推送通道取消關聯。
參數
- callback 回調
void unbindAccount(CommonCallback callback);
1.3 標簽API
綁定標簽
- 綁定標簽到指定目標;
- 支持向設備、賬號和別名綁定標簽,綁定類型由參數
target
指定; - 綁定標簽後,第二天服務端可按該標簽推送,即
(T + 1)
天生效; - App最多支持綁定
128
個標簽,【請謹慎使用,避免標簽綁定達到上限】,單個標簽最大支持40
字節。
參數
- target 目標類型,1:本設備; 2:本設備綁定賬號; 3:別名
- target(
V2.3.5及以上版本
) 目標類型,CloudPushService.DEVICE_TARGET:本設備; CloudPushService.ACCOUNT_TARGET:本賬號; CloudPushService.ALIAS_TARGET:別名 - tags 標簽(數組輸入)
- alias 別名(僅當target = 3時生效)
- callback 回調
void bindTag(int target, String[] tags, String alias, CommonCallback callback);
解綁標簽
- 解綁指定目標標簽;
- 支持解綁設備、賬號和別名標簽,解綁類型由參數
target
指定; - 解綁標簽後,當天服務端可繼續按該標簽推送,解綁生效時間在第二天,即
(T + 1)
天生效; 解綁標簽
不等同於刪除標簽
,目前不支持標簽的刪除。
參數
- target 目標類型,1:本設備; 2:本設備綁定賬號; 3:別名。
- target(
V2.3.5及以上版本
) 目標類型,CloudPushService.DEVICE_TARGET:本設備; CloudPushService.ACCOUNT_TARGET:本賬號; CloudPushService.ALIAS_TARGET:別名 - tags 標簽(數組輸入)
- alias 別名(僅當target = 3時生效)
- callback 回調
void unbindTag(int target, String[] tags, String alias, CommonCallback callback);
查詢標簽
- 查詢目標綁定標簽,當前僅支持查詢設備標簽;
- 查詢結果可從回調onSuccess(response)的response獲取;
- 標簽綁定成功後即可查詢。
參數
- target 目標類型,1: 本設備
- target(
V2.3.5及以上版本
) 目標類型,CloudPushService.DEVICE_TARGET:本設備; - callback 回調
void listTags(int target, CommonCallback callback);
1.4 別名API
添加別名
- 設備添加別名;
- 單個設備最多添加
128
個別名,且同一別名最多添加到128
個設備; - 別名支持
128
字節。
參數
- alias 別名
- callback 回調
void addAlias(String alias, CommonCallback callback);
刪除別名
- 刪除設備別名;
- 支持刪除指定別名和刪除全部別名(alias = null || alias.length = 0)。
參數
- alias 別名(
alias = null or alias.length = 0
時,刪除設備全部別名) - callback 回調
void removeAlias(String alias, CommonCallback callback);
查詢別名
- 查詢設備別名;
- 查詢結果可從回調onSuccess(response)的response中獲取
參數
- callback 回調
void listAliases(CommonCallback callback);
1.5 通知設置API
設置通知聲音
- 設置推送通知聲音文件路徑;
- 若不調用本接口,默認獲取資源id為
R.raw.alicloud_notification_sound
的資源文件; - 若沒有獲取到指定聲音文件,取設備設置的消息聲音。
參數
- filePath 通知聲音文件路徑
void setNotificationSoundFilePath(String filePath);
設置通知欄圖標
- 設置推送通知欄圖標資源Bitmap。
- 若不調用本接口,默認獲取id為R.drawable.alicloud_notification_largeIcon的資源文件;
- 若沒有獲取到指定圖標文件,取App啟動圖標。
參數
- icon 圖標資源Bitmap
void setNotificationLargeIcon(Bitmap icon);
設置狀態欄圖標
- 設置推送狀態欄圖標資源Id;
- 若不調用本接口,默認獲取id為R.drawable.alicloud_notification_smallIcon的資源文件;
- 若沒有獲取到指定資源文件Id,取App啟動圖標。
參數
- iconId 圖標資源Id
void setNotificationSmallIcon(int iconId);
設置免打擾時段
- 設置免打擾時間段,過濾所有通知與消息;
- 免打擾時段僅支持設置一次,多次調用以最後一次調用設置時段為準;
- 設置免打擾時段為00:00 - 00:00,可取消免打擾功能;(
V2.3.4及以下功能支持該用法,V2.3.5及以上版本使用關閉免打擾功能接口
) - 全天免打擾可以設置為”0:0-23:59”
- 免打擾時段設置對小米輔助彈窗通知無效。
參數
- startHour 免打擾的起始時間(小時),24小時製,取值範圍:0-23
- startMinute 免打擾起始時間(分鍾),取值範圍:0-59
- endHour 免打擾的結束時間(小時),24小時製,取值範圍:0-23
- endMinute 免打擾結束時間(分鍾),取值範圍:0-59
void setDoNotDisturb(int startHour, int startMinute, int endHour, int endMinute, CommonCallback callback);
關閉免打擾功能(V2.3.5
及以上版本支持)
- 關閉後,先前設置的免打擾時段失效
- 免打擾功能默認是關閉的
- 沒有對應的開發免打擾功能接口,調用設置
免打擾功能時段
功能後自動打開免打擾功能
void closeDoNotDisturbMode();
2. MessageReceiver
- 通過繼承
MessageReciever
,可以攔截通知,接收消息,獲取推送中的擴展字段。或者在通知打開或刪除的時候,切入進行後續處理。
使用方法:
- 繼承
com.alibaba.sdk.android.push.MessageReceiver
; - 在Manifest中找到原來MessageReceiver的配置,將上邊的class替換成你自己的receiver[不要配置多個]。
<!--消息接收監聽器-->
<receiver android:name="com.alibaba.sdk.android.push.MessageReceiver <-- 把這裏替換成你自己的receiver">
<intent-filter>
<action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED"/>
</intent-filter>
... ...
</receiver>
消息接收回調
- 用於接收服務端推送的消息。
- 消息不會彈窗,而是回調該方法。
參數
- context 上下文環境
- message
CPushMessage
類型,可以獲取消息Id、消息標題和內容。
void onMessage(Context context, CPushMessage message);
通知接收回調
- 客戶端接收到通知後,回調該方法。
- 可獲取到並處理通知相關的參數。
參數
- context 上下文環境
- title 通知標題
- summary 通知內容
- extraMap 通知額外參數,包括部分係統自帶參數:
_ALIYUN_NOTIFICATION_ID_(V2.3.5及以上)
:創建通知對應id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上)
:創建通知對應id。默認不帶,需要通過OpenApi設置
void onNotification(Context context, String title, String summary, Map<String, String> extraMap)
通知打開回調
- 打開通知時會回調該方法,通知打開上報由SDK自動完成。
參數
- context 上下文環境
- title 通知標題
- summary 通知內容
- extraMap 通知額外參數,包括部分係統自帶參數:
_ALIYUN_NOTIFICATION_ID_(V2.3.5及以上)
:創建通知對應id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上)
:創建通知對應id。默認不帶,需要通過OpenApi設置
void onNotificationOpened(Context context, String title, String summary, String extraMap);
無跳轉邏輯通知打開回調
- 打開無跳轉邏輯(open=4)通知時回調該方法(
v2.3.2及以上版本支持
),通知打開上報由SDK自動完成。
參數
- context 上下文環境
- title 通知標題
- summary 通知內容
- extraMap 通知額外參數,包括部分係統自帶參數:
_ALIYUN_NOTIFICATION_ID_(V2.3.5及以上)
:創建通知對應id_ALIYUN_NOTIFICATION_PRIORITY_(V2.3.5及以上)
:創建通知對應id。默認不帶,需要通過OpenApi設置
void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap);
通知刪除回調
- 刪除通知時回調該方法,通知刪除上報由SDK自動完成。
參數
- context 上下文環境
- messageId 刪除通知的Id
void onNotificationRemoved(Context context, String messageId);
通知在應用內到達回調
- 當用戶創建自定義通知樣式,並且設置推送應用內到達不創建通知彈窗時調用該回調,且此時不調用
onNotification
回調(v2.3.3及以上版本支持
)
參數
- context 上下文環境
- title 通知標題
- summary 通知內容
- extraMap 通知額外參數
- openType 原本通知打開方式,1:打開APP;2:打開activity;3:打開URL;4:無跳轉邏輯
- openActivity 所要打開的activity的名稱,僅當openType=2時有效,其餘情況為null
- openUrl 所要打開的URL,僅當openType=3時有效,其餘情況為null
void onNotificationReceivedInApp(Context context, String title, String summary, Map<String, String> extraMap, int openType, String openActivity, String openUrl);
3. 自定義樣式通知(V2.3.3及以上版本開始支持
)
Android Push SDK支持用戶自定義通知樣式,用戶可以設定自己的通知樣式,涉及的內容包括通知的提醒方式(聲音、震動、靜默),通知在狀態欄的顯示圖標,推送消息應用內到達時是否創建通知以及自定義通知布局文件等。自定義樣式通知的設置包括兩部分:
3.1 客戶端設置通知樣式
- 用戶利用SDK提供的自定義通知樣式接口創建自定義樣式通知。SDK中有兩個自定義樣式通知類:1)
BasicCustomPushNotification
;2)AdvancedCustomPushNotification
。其中BasicCustomPushNotification
用戶設置基礎樣式,包括提醒方式、狀態欄圖標以及當推送消息到達時應用正處於前台情況下是否創建該通知等。AdvancedCustomPushNotification
是BasicCustomPushNotification
的子類,繼承了BasicCustomPushNotification
的所有方法,同時還可以設置通知樣式布局文件 - 每個樣式都需要對應一個特定的整數類型id,如果多個樣式設置為同一個id,則最後設置的樣式有效。如果SDK沒有找到對應id的樣式則會創建默認樣式的通知
- 樣式隻需設置一次,SDK會記住這個設置,在需要使用時加載對應樣式
- 具體使用例子請參考Demo
3.2 後端推送消息時添加自定義樣式id
- 用戶利用OpenApi推送消息時設定特定樣式的id
- 服務端不能設置樣式,隻能指定需要展現的樣式id
- 指定id的樣式必須在客戶端已經進行設置,否則SDK會創建默認樣式的通知
3.3 Example
Example-BasicCustomPushNotification
BasicCustomPushNotification notification = new BasicCustomPushNotification();
notification.setRemindType(BasicCustomPushNotification.REMIND_TYPE_SOUND);
notification.setStatusBarDrawable(R.drawable.logo_yuanjiao_120);
boolean res = CustomNotificationBuilder.getInstance().setCustomNotification(1, notification);
Example-AdvancedCustomPushNotification
AdvancedCustomPushNotification notification = new AdvancedCustomPushNotification(R.layout.notitfication_layout, R.id.m_icon, R.id.m_title, R.id.m_text);
notification.setServerOptionFirst(true);
notification.setBuildWhenAppInForeground(false);
boolean res = CustomNotificationBuilder.getInstance().setCustomNotificaon(2, notification);
Example-OpenApi
客戶端設置完成後,服務端在推送通知時需要利用OpenApi指明對應的自定義樣式ID
final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss");
final String date = dateFormat.format(new Date());
PushRequest pushRequest = new PushRequest();
// 推送目標
pushRequest.setAppKey(appKey);
pushRequest.setTarget("device"); //推送目標: device:推送給設備; account:推送給指定帳號,tag:推送給自定義標簽; all: 推送給全部
pushRequest.setTargetValue("deviceId");
// 推送配置
pushRequest.setType(1); // 0:表示消息(默認為0), 1:表示通知
pushRequest.setTitle(date); // 消息的標題
pushRequest.setBody("PushRequest body"); // 消息的內容
pushRequest.setSummary("PushRequest summary"); // 通知的摘要
// 推送配置: Android
pushRequest.setAndroidOpenType("1"); // 點擊通知後動作,1:打開應用 2: 打開應用Activity 3:打開 url
pushRequest.setAndroidExtParameters("{"_NOTIFICATION_BAR_STYLE_":"2"}");
3.4 BasicCustomPushNotification API
默認構造函數
- BasicCustomPushNotification的默認構造函數,所有配置采用默認設置:通知方式采用震動+通知;NotificationFlag采用Notification.FLAG_AUTO_CANCEL,狀態欄圖標用的是android.R.drawable.stat_notify_chat。
public BasicCustomPushNotification();
構造函數
參數
- drawable 狀態欄圖標
- flags NotificationFlags,支持係統Notification下的Flag參數
- remindType 提醒類型,有BasicCustomPushNotification.REMIND_TYPE_SILENT:靜默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震動;BasicCustomPushNotification.REMIND_TYPE_SOUND:聲音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:聲音+震動
public BasicCustomPushNotification(int drawable, int flags, int remindType);
獲取狀態欄圖標
- 獲取已設置的狀態欄圖標
public int getStatusBarDrawable()
設置狀態欄圖標
- 更改狀態欄圖標設置
參數
- statusBarDrawable 狀態欄圖標資源id
public void setStatusBarDrawable(int statusBarDrawable);
獲取提醒方式
- 獲取已經設置的提醒方式
public int getRemindType();
設置提醒方式
- 更改自定義通知的提醒方式
參數
- remindType 提醒方式,提供的參數有:BasicCustomPushNotification.REMIND_TYPE_SILENT:靜默;BasicCustomPushNotification.REMIND_TYPE_VIBRATE:震動;BasicCustomPushNotification.REMIND_TYPE_SOUND:聲音;BasicCustomPushNotification.REMIND_TYPE_VIBRATE_AND_SOUND:聲音+震動
public void setRemindType(int remindType);
獲取Notification Flags參數
- 獲取已經設置的notification flag參數
public int getNotificationFlags();
設置Notification Flags參數
- 更改自定義通知的flags參數
參數
- notificationFlags 支持係統自帶的Notification Flag參數
public void setNotificationFlags(int notificationFlags);
獲取是否服務端設置優先
- 利用OpenApi或者阿裏雲推送控製台推送消息都可以設置提醒方式,當後端設置的提醒方式和自定義樣式提醒方式衝突時,SDK根據serverOptionFirst參數來判斷提醒方式策略。如果該參數為true,則采用後端設定的提醒方式;如果該參數為false,則采用自定義樣式指定的提醒方式。默認為false
public boolean isServerOptionFirst();
設置是否服務端優先
- 更改自定義通知的serverOptionFirst參數
參數
- serverOptionFirst 是否服務器配置優先
public void setServerOptionFirst(boolean serverOptionFirst);
獲取推送前台到達否創建通知參數
- 當推送到達時,如果應用處在前台,用戶可以通過自定義樣式決定是否創建通知。默認是創建通知
public boolean isBuildWhenAppInForeground();
設置推送前台到達否創建通知參數
- 更改當推送到達時應用處在前台情況下是否創建通知的設置
參數
- buildWhenAppInForeground 是否創建通知
public void setBuildWhenAppInForeground(boolean buildWhenAppInForeground);
3.5 AdvancedCustomPushNotification API
AdvancedCustomPushNotification
是BasicCustomPushNotification
的子類,繼承了上文中BasicCustomPushNotification
的所有方法。
AdvancedCustomPushNotification構造函數
- AdvancedCustomPushNotification類的構造函數,AdvancedCustomPushNotification沒有默認構造函數
參數
- view 自定義通知布局文件id。注:Notification的自定義布局是RemoteViews,和其他RemoteViews一樣,在自定義視圖布局文件中,僅支持FrameLayout、LinearLayout、RelativeLayout三種布局。
- iconViewId 自定義布局文件中icon的viewId
- titleViewId 自定義布局文件中title的viewId
- contentViewId 自定義布局文件中顯示通知正文的viewId
public AdvancedCustomPushNotification( int view, int iconViewId, int titleViewId, int contentViewId);
設置通知圖標
- 設置通知欄中顯示的圖標,該圖標顯示在iconViewId所指定的控件中。
參數
- icon icon圖標資源id
public void setIcon(int icon);
獲取通知圖標
- 獲取設置的通知圖標
public int getIcon();
3.6 CustomNotificationBuilder API
- CustomNotificationBuilder用於注冊用戶設定好的自定義樣式通知
獲取CustomNotificationBuilder實例
- CustomNotificationBuilder是單例類,必須通過指定接口來獲取實例
public static CustomNotificationBuilder getInstance();
注冊自定義樣式通知
- 用戶創建好自定義樣式通知後需要將其注冊,並賦予其一個特定的id
參數
- customNotificationId 所注冊的自定義樣式通知的id,id必須大於0。如果將多個不同的自定義樣式通知賦予同一個id,則最後注冊的通知有效,其他的通知將會被覆蓋
- notification 創建的通知,該通知可以是BasicCustomPushNotification對象也可以是AdvancedCustomPushNotification對象,但是不能為null
返回
- 該方法會返回一個boolean類型的結果,如果返回true,則注冊成功;反之則失敗。
public boolean setCustomNotification(int customNotificationId, BasicCustomPushNotification notification);
最後更新:2016-12-15 18:24:57
上一篇:
Android SDK配置__Android SDK手冊_App SDK 手冊_移動推送-阿裏雲
下一篇:
移動推送輔助通道配置__Android SDK手冊_App SDK 手冊_移動推送-阿裏雲
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲