651
iPhone_iPad_Mac_手機_平板_蘋果apple
推送高級接口__API列表_OpenAPI 1.0_移動推送-阿裏雲
Push
描述
推送高級接口。
請求參數
基礎參數
名稱 |
類型 |
是否必須 |
描述 |
---|
Action |
String |
是 |
操作接口名稱,取值:Push |
AppKey |
Long |
是 |
AppKey信息 |
推送目標(destination)
名稱 |
類型 |
是否必須 |
描述 |
---|
Target |
String |
是 |
推送目標device :推送給設備account :推送給指定帳號alias :推送給指定別名tag :推送給指定Tagall :推送給全部設備
|
TargetValue |
String |
是 |
根據Target 來設定,多個值使用逗號分隔,最多支持100個。Target=device ,值如deviceid111,deviceid1111 Target=account ,值如account111,account222 Target=alias ,值如alias111,alias222 Target=tag ,支持單Tag和多Tag,格式請參考標簽格式Target=all ,值為all
|
DeviceType |
Integer |
是 |
設備類型,取值範圍為:0 :iOS設備1 :Andriod設備3 :全部類型設備
|
推送配置(config)
名稱 |
類型 |
是否必須 |
描述 |
---|
Type |
Integer |
是 |
|
Title |
String |
是 |
Android消息標題,Android通知標題,iOS消息標題,最長20個字符,中文為1個字符 |
Body |
String |
是 |
Android消息內容,Android通知內容,iOS消息內容 |
Summary |
String |
否 |
iOS通知內容 |
Title
/Body
/Summary
展開說明如下:
屬性推送類型 |
消息 - iOS |
消息 - Android |
通知 - iOS |
通知 - Android |
---|
Title |
消息標題,對應消息回調中CCPSysMessage 的title 字段 |
消息標題,對應消息回調中CPushMessage 的title 字段 |
N/A |
通知標題,對應通知收到和打開回調的title 字段 |
Body |
消息內容,對應消息回調中CCPSysMessage 的body 字段 |
消息內容,對應消息回調中CPushMessage 的content 字段 |
N/A |
通知內容,對應通知收到和通知打開回調的summary 字段 |
Summary |
N/A |
N/A |
通知內容 |
N/A |
下述配置僅作用於iOS通知任務
- 【注意】若沒有進行iOS 10通知相關配置(iOSTitle / iOSSubTitle / iOSMutableContent / iOSNotificationCategory),通知payload保持老版本不變,已經保證對老版本payload兼容性;若進行iOS 10通知相關配置,請確保客戶端業務邏輯對payload相關字段處理的兼容性;iOS通知payload字段參考iOS 10通知適配-第3節。
名稱 |
類型 |
是否必須 |
描述 |
---|
iOSMusic |
String |
否 |
iOS通知聲音,不設置該參數播放係統默認聲音,設置空字符(“”)不播放聲音 |
iOSBadge |
String |
否 |
iOS應用圖標右上角角標 |
iOSTitle |
String |
否 |
iOS通知標題(iOS 10+通知顯示標題,[ iOS 8.2 <= iOS係統 < iOS 10 ]替換通知應用名稱) |
iOSSubtitle |
String |
否 |
iOS通知副標題(iOS 10+) |
iOSMutableContent |
Boolean |
否 |
是否使能iOS通知擴展處理(iOS 10+) |
iOSNotificationCategory |
String |
否 |
設定iOS通知Category(iOS 10+) |
iOSExtParameters |
String |
否 |
iOS通知的擴展屬性,iOS 10+ 可以在此指定富媒體推送通知的資源Url: {“attachment”: “https://xxxx.xxx/notification_pic.png"} (注意 : 該參數要以json map的格式傳入,否則會解析出錯) |
ApnsEnv |
String |
否 |
iOS的通知是通過APNs中心來發送的,需要填寫對應的環境信息。DEV :表示開發環境PRODUCT :表示生產環境(默認值)
|
下述配置僅作用於iOS消息
名稱 |
類型 |
是否必須 |
描述 |
---|
Remind |
Boolean |
否 |
推送時設備不在線(即與移動推送的服務端的長連接通道不通),則這條推送會做為通知,通過蘋果的APNs通道送達一次(發送通知時,Summary為通知的內容,Message不起作用)。注意:離線消息轉通知僅適用於生產環境 |
下述配置僅作用於Android通知任務
名稱 |
類型 |
是否必須 |
描述 |
---|
AndroidMusic |
String |
否 |
Android通知聲音(保留參數,當前暫不起作用) |
AndroidOpenType |
String |
否 |
點擊通知後動作1 :打開應用-
2 :打開應用Activity 3 :打開URL4 :無跳轉邏輯
|
AndroidActivity |
String |
否 |
設定通知打開的activity,僅當AndroidOpenType=2 有效,如:com.alibaba.cloudpushdemo.bizactivity |
XiaomiActivity |
String |
否 |
設置該參數後啟動小米托管彈窗功能, 此處指定通知點擊後跳轉的Activity(托管彈窗的前提條件:1. 集成小米輔助通道;2. StoreOffline參數設為true)注意: 小米輔助通道對托管彈窗傳輸有長度限製,title < 16字符(中英文算一個字符),Body < 128字符(中英文算一個字符) |
AndroidOpenUrl |
String |
否 |
Android收到推送後打開對應的url,僅當AndroidOpenType=3 有效 |
AndroidExtParameters |
String |
否 |
設定通知的擴展屬性。(目前android通知的提醒方式的設置在該參數裏麵:”_NOTIFY_TYPE_=0123”,0:靜音,1:振動,2:聲音,3:聲音和振動。android自定義通知樣式的設置也在該參數裏麵:”_NOTIFICATION_BAR_STYLE_“=123..100)(注意 : 該參數要以json map的格式傳入,否則會解析出錯) |
推送控製(push control)
名稱 |
類型 |
是否必須 |
描述 |
---|
PushTime |
String |
否 |
用於定時發送。不設置缺省是立即發送。時間格式按照ISO8601標準表示,並需要使用UTC時間,格式為YYYY-MM-DDThh:mm:ssZ 。 |
StoreOffline |
Boolean |
否 |
離線消息/通知是否保存。若保存,在推送時候用戶不在線,在過期時間(ExpireTime )內用戶上線時會被再次發送。StoreOffline默認設置為false,ExpireTime默認為72小時。(iOS通知走Apns鏈路,不受StoreOffline影響) |
ExpireTime |
String |
否 |
離線消息/通知的過期時間,和StoreOffline 配合使用,過期則不會再被發送,最長保存72小時。默認為72小時。時間格式按照ISO8601標準表示,並需要使用UTC時間,格式為YYYY-MM-DDThh:mm:ssZ ,過期時間不能小於當前時間或者定時發送時間加上3秒(ExpireTime > PushTime + 3秒),3秒是為了冗餘網絡和係統延遲造成的誤差。 |
響應參數
名稱 |
類型 |
描述 |
---|
ResponseId |
String |
請求返回ID(如需排查問題可告訴工作人員該ID) |
錯誤碼
對於所有接口的通用性錯誤,請參考錯誤代碼表。
示例
請求示例
https://cloudpush.aliyuncs.com/?Action=Push
&AppKey=23267207
&Target=device&
&TargetValue=e2ba19de97604f55b165576736477b74%2C92a1da34bdfd4c9692714917ce22d53d
&Title=hello
&Body=hello
&Type=1
&AndroidOpenType=1
&DeviceType=3
&Remind=false
&StoreOffline=false
&<公共請求參數>
返回示例
XML格式
<?xml version='1.0' encoding='UTF-8'?>
<PushResponse>
<ResponseId>129376928</ResponseId>
</PushResponse>
JSON格式
{
"ResponseId": "129377184"
}
Java示例代碼
PushRequest pushRequest = new PushRequest();
// 推送目標
pushRequest.setAppKey(appKey);
pushRequest.setTarget("all"); //推送目標: device:推送給設備; account:推送給指定帳號,tag:推送給自定義標簽; all: 推送給全部
pushRequest.setTargetValue("all"); //根據Target來設定,如Target=device, 則對應的值為 設備id1,設備id2. 多個值使用逗號分隔.(帳號與設備有一次最多100個的限製)
pushRequest.setDeviceType(3); // 設備類型deviceType 取值範圍為:0~3. iOS設備: 0; Android設備: 1; 全部: 3, 這是默認值.
// 推送配置
pushRequest.setType(1); // 0:表示消息(默認為0), 1:表示通知
pushRequest.setTitle("Hello"); // 消息的標題
pushRequest.setBody("PushRequest body"); // 消息的內容
pushRequest.setSummary("PushRequest summary"); // 通知的摘要
// 推送配置: iOS
pushRequest.setiOSBadge("5"); // iOS應用圖標右上角角標
pushRequest.setiOSMusic("default"); // iOS通知聲音
pushRequest.setiOSExtParameters("{"k1":"ios","k2":"v2"}"); //自定義的kv結構,開發者擴展用 針對iOS設備
pushRequest.setApnsEnv("DEV");
// pushRequest.setRemind(true); // 當APP不在線時候,是否通過通知提醒
// 推送配置: Android
pushRequest.setAndroidOpenType("3"); // 點擊通知後動作,1:打開應用 2: 打開應用Activity 3:打開 url
pushRequest.setAndroidOpenUrl("https://www.baidu.com"); // Android收到推送後打開對應的url,僅僅當androidOpenType=3有效
pushRequest.setAndroidExtParameters("{"k1":"android","k2":"v2"}"); // 設定android類型設備通知的擴展屬性
// 推送控製
final Date pushDate = new Date(System.currentTimeMillis() + 3600 * 1000); // 一小時後發送, 也可以設置成你指定固定時間
final String pushTime = ParameterHelper.getISO8601Time(pushDate);
pushRequest.setPushTime(pushTime); // 延後推送。可選,如果不設置表示立即推送
pushRequest.setStoreOffline(true); // 離線消息是否保存,若保存, 在推送時候,用戶即使不在線,下一次上線則會收到
final String expireTime = ParameterHelper.getISO8601Time(new Date(System.currentTimeMillis() + 12 * 3600 * 1000)); // 12小時後消息失效, 不會再發送
pushRequest.setExpireTime(expireTime);
PushResponse pushResponse = client.getAcsResponse(pushRequest);
System.out.printf("RequestId: %s, ResponseId: %s, message: %sn",
pushResponse.getRequestId(), pushResponse.getResponseId(), pushResponse.getMessage());
com.aliyuncs.exceptions.ClientException: Push Failed : Push Fail! 排查步驟
1、檢查SDK的版本號,是否是最新版本?
2、title是不是大於20個字符了?
3、是不是有必填參數沒有填寫? 高級接口因為既可以發送iOS也可以發送Android,所以iOS和Android必填參數都需要填寫,參數的完整性校驗之後才會按照參數設置走iOS或者Android的發送流程。
最後更新:2016-12-14 14:30:02