從蘋果官方微信號 微信公共平臺(tái) 發(fā)布的文章 《小程序支持打開移動(dòng)應(yīng)用》 來看,小程序新增了兩個(gè)功能:
針對第二個(gè)功能,就是開發(fā)者可以自定義小程序菜單欄的顏色風(fēng)格,根據(jù)需求,對小程序菜單外的標(biāo)題區(qū)域進(jìn)行自定義,比如設(shè)置標(biāo)題區(qū)域的顏色。這里主要介紹一下支持打開移動(dòng)應(yīng)用的功能。 支持打開移動(dòng)應(yīng)用乍一看其實(shí)有點(diǎn)標(biāo)題黨的行為,支持打開移動(dòng)應(yīng)用? 讓我想到的是我可以用小程序打開任何移動(dòng)應(yīng)用?(答案是不能) 那我是不是可以打開自己的App?(答案是有限制性地打開) 是不是可以打開系統(tǒng)自帶的瀏覽器?(答案是不能) 是不是可以打開第三方的移動(dòng)應(yīng)用呢?(答案也是不能) 其實(shí),小程序打開移動(dòng)應(yīng)用有一條硬性要求: 從移動(dòng)應(yīng)用分享至小程序的頁面,用戶訪問時(shí)支持打開來源應(yīng)用。 接下來進(jìn)一步解讀一下這條要求。 大部分程序都有微信分享功能,我們常做的就是將一個(gè)圖片、一段文字亦或是一個(gè)URL鏈接進(jìn)行分享,可以分享給好友(包括群)、朋友圈或者是添加到個(gè)人收藏,如下:
我們還可以分享小程序,如圖:
上面是一個(gè)搶票軟件(智行)分享到微信的一個(gè)小程序,好友可以點(diǎn)擊小程序幫忙加速。按照官方文章的說法,分享到微信的小程序里面如果有一個(gè)按鈕,實(shí)現(xiàn)如下: <buttonopen-type="launchApp"app-parameter="wechat"binderror="launchAppError">打開APP</button> 那么當(dāng)點(diǎn)擊此按鈕時(shí),就會(huì)打開源App。在其他情況下是無法打開的,這里給出了一張能否打開移動(dòng)APP的圖解:
這里小程序給出一個(gè)場景值概念,只有場景值為1036(還有個(gè)狀態(tài)值true或false,它決定是否能夠打開APP。場景值為1036, 在小程序的生命周期內(nèi),這個(gè)狀態(tài)的初始值為 false,之后會(huì)隨著小程序的每次打開(無論是啟動(dòng)還是切到前臺(tái))而改變: 1.當(dāng)小程序從 1036(App 分享消息卡片) 打開時(shí),該狀態(tài)置為 true。 2.當(dāng)小程序從 1089(微信聊天主界面下拉)或 1090(長按小程序右上角菜單喚出最近使用歷史)的場景打開時(shí),該狀態(tài)不變,即保持上一次打開小程序時(shí)該狀態(tài)的值。 3.當(dāng)小程序從非 1036/1089/1090 的場景打開,該狀態(tài)置為 false。
針對第二條,1089和1090那個(gè),我的理解是小程序類似于移動(dòng)APP,它并沒有關(guān)閉,而是在后臺(tái),所以1089和1090打開小程序 以上便是對小程序打開移動(dòng)應(yīng)用的介紹,接下來看一下具體代碼實(shí)現(xiàn)。 代碼實(shí)現(xiàn)分享小程序打開移動(dòng)應(yīng)用(iOS版本,Android類似)首先要做的就是新建一個(gè)工程,然后集成微信分享,具體如何集成可以參見 官網(wǎng)集成文檔 ,集成之后,在頁面添加一個(gè)按鈕,觸發(fā)實(shí)現(xiàn)如下: - (IBAction)openSmallProgramAction:(id)sender { //分享小程序的實(shí)現(xiàn) WXMiniProgramObject *wxMiniObject = [WXMiniProgramObject object]; wxMiniObject.userName = @"gh_*************"; wxMiniObject.path = @"pages/index/index"; // WXMediaMessage *message = [WXMediaMessage message]; message.title = @"我是小程序"; message.description = @"我是用來測試打開App的小程序"; message.mediaObject = wxMiniObject; SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init]; req.message = message; req.scene = WXSceneSession; [WXApi sendReq:req]; //原來做分享的實(shí)現(xiàn) // SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init]; // req.text = @"分享的內(nèi)容"; // req.bText = YES; // req.scene = WXSceneSession; // [WXApi sendReq:req]; } 這里是所有的App都可以用上面的實(shí)現(xiàn)方式分享小程序么嗎?答案是否定的??垂俜轿臋n的說法: 移動(dòng)應(yīng)用分享功能支持小程序類型分享,要求發(fā)起分享的APP與小程序?qū)儆谕晃⑿砰_放平臺(tái)帳號。支持分享小程序類型消息至好友會(huì)話,不支持“分享至朋友圈”及“收藏”。 也就是說小程序分享是有限制的:
經(jīng)過測試,一個(gè)賬號不能同時(shí)注冊 微信開放平臺(tái) 和 微信公眾平臺(tái) 。也就是說:如果你的賬號注冊了微信開放平臺(tái),那么該賬號就不能再次注冊微信公眾平臺(tái)。 微信開放平臺(tái)放的是移動(dòng)APP。 微信公眾平臺(tái)放的是小程序。 那官方所說的屬于同一微信開放平臺(tái)賬號就不是一個(gè)賬號下既有APP又有小程序(因?yàn)樾〕绦蚴窃谖⑿殴娖脚_(tái)開發(fā)的)。打開微信開放平臺(tái)頁面之后,第一條就好理解了:
如果你想要在移動(dòng)APP內(nèi)分享小程序,你必須在該APP所在的微信開放平臺(tái)賬號下綁定微信小程序,這樣才可以在APP中實(shí)現(xiàn)小程序分享。這就是官方所說的APP和小程序?qū)儆谕晃⑿砰_放平臺(tái)賬號。 那么APP怎么知道分享哪個(gè)小程序的? 或者說APP是怎么和小程序關(guān)聯(lián)的呢? 這就要看上面的那段代碼(前提是你把小程序和APP放到了同一開放平臺(tái)賬號下),其中有一行: wxMiniObject.userName = @"gh_*************"; 該userName就是小程序的userName,你可以登錄 微信公眾號平臺(tái)|小程序 ,然后在設(shè)置—>基本設(shè)置中查看,里面有個(gè)原始id,就是小程序的userName。 這樣你就將APP的分享和小程序關(guān)聯(lián)起來了。 還有一個(gè)問題: 分享的小程序如何打開指定的頁面呢? 這就要看另一行代碼: wxMiniObject.path = @"pages/index/index"; 你需要設(shè)置一下小程序的path,這個(gè)path的頁面就是你點(diǎn)擊分享的小程序打開的頁面。這里看一張小程序開發(fā)工具的圖:
pages所指的就是頁面,例如上圖的pages文件夾包含了detail和index和logs三個(gè)頁面,其中: index:指代的是信用卡列表頁。 detail:指代的是點(diǎn)擊列表某個(gè)item進(jìn)入的詳情頁。 logs:日志頁面 所以如果你想跳轉(zhuǎn)到詳情頁,那么你在設(shè)置wxMiniObject的path時(shí)就應(yīng)該寫成“pages/detail/detail”。這樣就實(shí)現(xiàn)了點(diǎn)擊分享的小程序進(jìn)入指定的頁面了(如果頁面需要參數(shù)你也要在分享時(shí)傳過去)。 wxml:相當(dāng)于html wxss:相當(dāng)于css 這里其實(shí)是微信小程序自己定義了后綴。 這個(gè)時(shí)候你分享的小程序場景值為1036,且狀態(tài)為true,如果此時(shí)你小程序里面有open-type為“launchApp”的button,點(diǎn)擊button你就會(huì)跳回你的移動(dòng)APP啦。如果想給APP回傳內(nèi)容,可以設(shè)置app-parameter。就像這個(gè)小按鈕: <button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打開APP</button> 到此,我想你應(yīng)該大概了解小程序支持打開移動(dòng)應(yīng)用到底是怎么回事了。 總結(jié)小程序并不是支持打開所有移動(dòng)APP,就算是同一個(gè)微信開放平臺(tái)賬號下面的移動(dòng)APP和小程序,小程序也不一定可以打開,具體還要看場景。 展望
小程序支持跳轉(zhuǎn)移動(dòng)APP是很大的進(jìn)步,在小程序以后的進(jìn)一步完善中,它應(yīng)該會(huì)朝著APP直接打開小程序方向邁進(jìn), |
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)