移動推送
提供從雲端到移動終端的優質推送服務,支援android和ios平台的通知/訊息的推送功能.
推送內容及模式
推送方式
按裝置號推送,在客戶端呼叫getdeviceld獲得裝置號,再通過控制台/openapi介面推送
名詞解釋
accesskeyld和accesskeysecret:阿里雲使用者使用雲產品的openapi介面驗權時需要,從阿里雲官網控制台獲取
responseld:openapi推送請求返回id(如需排查問題可告訴客戶人員該id)。
messageld:某一次推送的訊息id。從控制台通知記錄/訊息記錄中可以找到訊息id。
deviceld:裝置在推送的唯一標示。 32位,數字和小寫字母組合,通過**獲取:android:cloudpushservice的getdeviceld方法,ios:cloudpushsdk的getdeviceld方法。
devicetoken:ios裝置在蘋果中心註冊時返回的64位裝置識別符號(ios裝置同時會有deviceld和devicetoken,請不要混淆)。
account:給裝置新增的賬號,可以是任意您的業務需要的,乙個裝置只能新增乙個account,account可以新增多個裝置。
alias:給裝置新增的別名,可以是任意您的業務需要的,乙個裝置可以最多新增128個alias,乙個alias可以最多新增128個裝置。
api | 說明 |
------- | ------- |
queryaliases | 查詢別名
unbindalias | 解綁別名
querytags | 查詢tag
listtags | tag列表
bindtag | 繫結tag
unbindtag | 解綁tag
removetag | 刪除tag
示例?format=xml
®ionid=cn-hangzhou
&version=2016-08-01
&accesskeyid=testid
&signature=pc5wb8gokvn0xfeu%2fzv%2binm1dgi%3d
&signaturemethod=hmac-sha1
&signaturenonce=15215528852396
&signatureversion=1.0
×tamp=2016-02-25t12:00:00z
&《介面相關引數》
公共返回引數
使用者傳送的每次介面呼叫請求,無論成功與否,系統都會返回乙個唯一識別碼requestid給使用者。
json示例12
34)", "i10001": "arranging result changed. (school: )",
"i20000": "restart. (school: )"
}def __init__(self, target, targetvalue):
self._target = target
# 標籤
# json格式
# tags = , ]}
self._targetvalue = targetvalue
# 讀取配置檔案
self._cf = configparser.configparser()
self._cf.read(configpath)
# 讀取環境變數或定義常量
self._access_key_id = os.getenv('preq_access_key_id', self._cf.get("push_request","preq_access_key_id"))
self._access_key_secret = os.getenv('preq_access_key_secret', self._cf.get("push_request","preq_access_key_secret"))
self._region_id = os.getenv('preq_region_id', self._cf.get("push_request","preq_region_id"))
self._clt = client.acsclient(self._access_key_id, self._access_key_secret, self._region_id)
self._request = pushrequest.pushrequest()
async def banpai_push_msg(self, title, message):
# 檢查引數不為空
if title and message:
#推送目標: 按標籤推送
self._request.set_target(self._target)
#設定tag value
self._request.set_targetvalue(self._targetvalue)
#裝置型別 android
self._request.set_devicetype("android")
#訊息型別 message
self._request.set_pushtype("message")
#訊息的標題
self._request.set_title(title)
#訊息的內容
self._request.set_body(message)
#30秒之後傳送, 也可以設定成你指定固定時間
pushdate = datetime.utcnow() + timedelta(seconds = +5)
#24小時後訊息失效, 不會再傳送
expiredate = datetime.utcnow() + timedelta(hours = +24)
#轉換成iso8601t資料格式
pushtime = pushdate.strftime("%y-%m-%dt%xz")
expiretime = expiredate.strftime("%y-%m-%dt%xz")
self._request.set_pushtime(pushtime)
self._request.set_expiretime(expiretime)
#設定過期時間,單位是小時
# self._request.set_timeout(24)
self._request.set_storeoffline(true)
res = self._clt.do_action(self._request)
res = res.decode('unicode_escape')
messageid = re.findall("(.*)?", res)
return messageid
else:
return none
呼叫推送
tagsvalue = ,
, arr)) }
]}print(tagsvalue)
apr = alipushrequest("tag", tagsvalue)
if self._jobtype == coursearranging.constjobtypeinit:
push_title = "i10000"
push_msg =
elif self._jobtype == coursearranging.constjobtypesync:
push_title = "i10001"
push_msg =
else:
continue
cnt = 1
pushedflag = false
while not pushedflag and cnt <= 3:
try:
await apr.banpai_push_msg(push_title, push_msg)
pushedflag = true
except exception as ex:
cnt += 1
if cnt > 3:
raise exception("3 times push failed!")
阿里雲郵件推送服務
提起郵件服務,最早之前一般自建郵件伺服器,需要硬軟體和運維的支援,穩定性也難保證,隨著雲服務的普及郵件推送功能的服務化是趨勢,也省錢省事省心。首先在阿里雲郵件推送控制台新增網域名稱,然後在自己的dns伺服器中新增如下的解析 根據控制台中的 配置 在mac上可以通過nslookup query txt...
阿里雲郵件推送服務
提起郵件服務,最早之前一般自建郵件伺服器,需要硬軟體和運維的支援,穩定性也難保證,隨著雲服務的普及郵件推送功能的服務化是趨勢,也省錢省事省心。首先在阿里雲郵件推送控制台新增網域名稱,然後在自己的dns伺服器中新增如下的解析 根據控制台中的 配置 在mac上可以通過nslookup query txt...
MQTT之阿里雲接受推送訊息
mqtt是 一種輕量級的協議 mq telemetry transport 適合於低頻寬 不可靠連線 嵌入式裝置 cpu 記憶體資源緊張,適用於各種受限的環境。2 協議特徵 1 訊息模型 mqtt是一種基於 的發布 訂閱的訊息協議。提供一對多的訊息分發,解除應用程式耦合。乙個發布者可以對應多個訂閱者...