技术干货 | 轻松两步完成向 mPaaS 小程序传递启动参数
前言
在部分場(chǎng)景下,需要向小程序的默認(rèn)接收頁(yè)(pages/index/index)傳遞參數(shù)。
本文將以傳遞 name 和 pwd 參數(shù)為例,分別介紹此場(chǎng)景在 Android 小程序和 iOS 小程序中的實(shí)現(xiàn)過(guò)程。
前提條件
已參照 快速開(kāi)始 文檔接入了小程序組件。
Android 小程序
1.在客戶端添加啟動(dòng)時(shí)跳轉(zhuǎn)頁(yè)面的參數(shù)信息。如下所示:
Bundle param = new Bundle(); String query = "name="+Uri.encode("123")+"&pwd="+Uri.encode("456"); param.putString("query",query); //設(shè)置參數(shù) MPNebula.startApp(appId:"2020121620201216",param);URL 啟動(dòng)傳參時(shí),傳遞參數(shù)的字段為 query;獲取參數(shù)時(shí),通過(guò)解析 query 字段獲取。
startApp 參數(shù)說(shuō)明:
- appId:小程序的 ID,可以從 mPaaS 控制臺(tái)查看。
- param:Bundle 對(duì)象,可以向 Bundle 對(duì)象傳遞請(qǐng)求參數(shù),key="query",value="鍵值對(duì)";多個(gè)參數(shù)中間用(&)隔開(kāi)。
- 注意1:小程序框架會(huì)對(duì)每對(duì)自定義入?yún)⒌逆I值對(duì)的 value 進(jìn)行 uri decode。因此,請(qǐng)對(duì)入?yún)㈡I值對(duì)的 value 進(jìn)行 uri encode。
- 注意2:小程序框架不會(huì)對(duì)自定義入?yún)⒌逆I值對(duì)的 key 做任何處理。因此,請(qǐng)不要對(duì) key 設(shè)置特殊字符,防止小程序側(cè)無(wú)法識(shí)別自定義參數(shù)。
2.小程序獲取參數(shù)。從 onLaunch/onShow(options) 方法的參數(shù) options 中獲取。
存儲(chǔ) app.js 會(huì)獲取客戶端向小程序傳遞的參數(shù)并保存到全局變量 globalData 中,使用時(shí)從 globalData 直接取值或更新值。如請(qǐng)求頭里的 token、user_id 等參數(shù),從 Native 傳遞過(guò)來(lái)后,保存到 globalData 中,使用時(shí)直接取值。
iOS 小程序
1.在客戶端添加啟動(dòng)時(shí)跳轉(zhuǎn)頁(yè)面的參數(shù)信息。如下所示:
NSString *pwd = [@"123&*!@#$%^*" stringByAddingPercentEncodingWithAllowedCharacters:[[NSCharacterSet characterSetWithCharactersInString:@"?!@#$^&%*+,:;='\"`<>()[]{}/\\| "] invertedSet]];NSString *queryvalue = [NSString stringWithFormat:@"name=mpaas&pwd=%@",pwd];NSDictionary * dic = @{@"query":queryvalue};[MPNebulaAdapterInterface startTinyAppWithId:@"1234567891234567" params:dic];URL 啟動(dòng)傳參時(shí),傳遞參數(shù)的字段為 query;獲取參數(shù)時(shí),通過(guò)解析 query 字段獲取。startApp 參數(shù)說(shuō)明:
- appId:小程序的 ID,從 mPaaS 控制臺(tái)獲取。
- param:params 小程序參數(shù),自定義傳值請(qǐng)使用 @{@"query":@"key=value&key=value"}; ,多個(gè)參數(shù)之間用 & 隔開(kāi)。
- 注意1:小程序框架會(huì)對(duì)每對(duì)自定義入?yún)⒌逆I值對(duì)的 value 進(jìn)行 decode。若您的入?yún)㈡I值對(duì)的 value 中有特殊字符 & ,請(qǐng)調(diào)用以下方法對(duì)入?yún)⑦M(jìn)行 encode。NSString pwd = [@"123&!@#$%^*" stringByAddingPercentEncodingWithAllowedCharacters:[[NSCharacterSet characterSetWithCharactersInString:@"?!@#$^&%*+,:;='\"`<>()[]{}/\| "] invertedSet]];
如果沒(méi)有特殊字符,則不需要使用 encode。
- 注意2:小程序框架不會(huì)對(duì)自定義入?yún)⒌逆I值對(duì)的 key 做任何處理。因此,請(qǐng)不要對(duì) key 設(shè)置特殊字符,防止小程序側(cè)無(wú)法識(shí)別自定義參數(shù)。
2.小程序從 onLaunch/onShow(options) 方法的參數(shù) options 中獲取參數(shù)。
操作方法同安卓一致。
撰文:劉啟洋、滕宏才
E · N · D
原文鏈接:https://developer.aliyun.com/article/783939?
版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊(cè)用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開(kāi)發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開(kāi)發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開(kāi)發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫(xiě)侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。 與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的技术干货 | 轻松两步完成向 mPaaS 小程序传递启动参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 这个云原生开发的痛点你遇到了吗?
- 下一篇: 对比解读《2020年CNCF中国云原生调