阿里雲訊息推送服務

2021-09-19 20:24:01 字數 4095 閱讀 1958

移動推送

提供從雲端到移動終端的優質推送服務,支援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是一種基於 的發布 訂閱的訊息協議。提供一對多的訊息分發,解除應用程式耦合。乙個發布者可以對應多個訂閱者...