微信移動(dòng)應(yīng)用一次性訂閱消息開發(fā)指南
HiShop訊,2017年7月25日最新消息,hishop記者發(fā)現(xiàn)微信官方昨天發(fā)布新增了“一次性訂閱消息”接口,這對于微信用戶和開發(fā)者都是個(gè)好消息。開發(fā)者可以通過一次性訂閱消息授權(quán)讓微信用戶授權(quán)第三方應(yīng)用或公眾號(接入說明),獲得發(fā)送一次訂閱消息給到授權(quán)微信用戶的機(jī)會(huì)。授權(quán)微信用戶可以不需要關(guān)注公眾號。微信用戶每授權(quán)一次,開發(fā)者可獲得一次下發(fā)消息的權(quán)限,消息將下發(fā)至服務(wù)通知。以下為hishop記者整理的微信移動(dòng)應(yīng)用一次性訂閱消息開發(fā)指南相關(guān)內(nèi)容。
一、【使用說明】:
1.第三方發(fā)起微信一次性訂閱授權(quán)請求,微信用戶允許授權(quán)第三方應(yīng)用后,微信會(huì)拉起應(yīng)用或重定向到第三方網(wǎng)站,并且?guī)鲜跈?quán)用戶openid等信息
2.通過API給授權(quán)用戶推送一條訂閱消息
注:在進(jìn)行一次性訂閱消息授權(quán)接入之前,需要在微信開放平臺注冊開發(fā)者帳號,并擁有一個(gè)已審核通過的移動(dòng)應(yīng)用,獲得相應(yīng)的下發(fā)消息模板ID后,可開始接入流程。
二、【授權(quán)流程】:
——第一步:微信用戶同意授權(quán),獲取一次給用戶推送一條訂閱消息的機(jī)會(huì)
開發(fā)者需要配合使用微信開放平臺提供的SDK進(jìn)行一次性訂閱消息授權(quán)請求接入。正確接入SDK后,開發(fā)者移動(dòng)應(yīng)用會(huì)在終端本地拉起微信應(yīng)用進(jìn)行訂閱消息授權(quán),微信用戶確認(rèn)后微信將拉起開發(fā)者移動(dòng)應(yīng)用,并帶上授權(quán)用戶openid等信息。
▋iOS平臺應(yīng)用一次性訂閱消息授權(quán)接入代碼示例(請參考iOS接入指南):
WXSubscribeMsgReq *req = [[WXSubscribeMsgReq alloc] init];
req.scene = scene;
req.templateId = templateId;
req.reserved = reserved;
[WXApi sendReq:req];
▋Android平臺應(yīng)用一次性訂閱消息授權(quán)接入代碼示例(請參考Android接入指南):
SubscribeMessage.Req req = new SubscribeMessage.Req();
req.scene = scene;
req.templateID = templateID;
req.reserved = reserved;
【參數(shù)說明】
可拉起微信打開一次性消息訂閱授權(quán)頁:
【返回說明】:
用戶點(diǎn)擊授權(quán)后,微信客戶端會(huì)被拉起,跳轉(zhuǎn)至授權(quán)界面,用戶在該界面點(diǎn)擊確認(rèn)接收或取消,SDK通過SendAuth的Resp返回?cái)?shù)據(jù)給調(diào)用方。
【返回示例】:
openid:oyAaTjt-xXvP87pubE4eUOF-ttD4
template_id:7YuTL__ilzyZB9DXcDt2mHx-CAS_E7KtsQkhIGVhhRM
action:confirm
reserved:hello
scene:1000
【參數(shù)說明】
——第二步:通過API推送訂閱模板消息給到授權(quán)微信用戶
【接口請求說明】:
http請求方式: post
https://api.weixin.qq.com/cgi-bin/message/template/subscribe?access_token=ACCESS_TOKEN
【post數(shù)據(jù)示例】
{
“touser”:”OPENID”,
“template_id”:”TEMPLATE_ID”,
“url”:”URL”,
“scene”:”SCENE”,
“title”:”TITLE”,
“data”:{
“content”:{
“value”:”VALUE”,
“color”:”COLOR”
}
}
}
【參數(shù)說明】
【返回說明】
在調(diào)用接口后,會(huì)返回JSON數(shù)據(jù)包。正常時(shí)的返回JSON數(shù)據(jù)包示例:
{
“errcode”:0,
“errmsg”:”ok”
}