您當前位置>首頁 » 新聞資(zī)訊 » 小程序相關(guān) >
小程序支持打開移動(dòng)應用到底是怎麼回事?
發表時間:2021-3-31
發布人:葵宇科技
浏覽次數:54
從蘋果官方微信号 微信公共平台 發布的文(wén)章 《小程序支持打開移動(dòng)應用》 來看,小程序新增了兩個(gè)功能:
- 支持打開移動(dòng)應用
- 标題欄區域開放自定義
針對第二個(gè)功能,就是開發者可(kě)以自定義小程序菜單欄的顔色風格,根據需求,對小程序菜單外的标題區域進行自定義,比如(rú)設置标題區域的顔色。這裡主要介紹一下(xià)支持打開移動(dòng)應用的功能。
支持打開移動(dòng)應用
乍一看其實有點标題黨的行為,支持打開移動(dòng)應用?
讓我想到的是我可(kě)以用小程序打開任何移動(dòng)應用?(答案是不能)
那我是不是可(kě)以打開自己的App?(答案是有限制性地打開)
是不是可(kě)以打開系統自帶的浏覽器(qì)?(答案是不能)
是不是可(kě)以打開第三方的移動(dòng)應用呢(ne)?(答案也是不能)
其實,小程序打開移動(dòng)應用有一條硬性要求: 從移動(dòng)應用分享至小程序的頁面,用戶訪問(wèn)時支持打開來源應用。 接下(xià)來進一步解讀一下(xià)這條要求。
大部分程序都有微信分享功能,我們常做的就是将一個(gè)圖片、一段文(wén)字亦或是一個(gè)URL鍊接進行分享,可(kě)以分享給好友(包括群)、朋友圈或者是添加到個(gè)人收藏,如(rú)下(xià):
我們還可(kě)以分享小程序,如(rú)圖:
上面是一個(gè)搶票軟件(智行)分享到微信的一個(gè)小程序,好友可(kě)以點擊小程序幫忙加速。按照官方文(wén)章的說法,分享到微信的小程序裡面如(rú)果有一個(gè)按鈕,實現如(rú)下(xià):
<buttonopen-type="launchApp"app-parameter="wechat"binderror="launchAppError">打開APP</button>
那麼當點擊此按鈕時,就會打開源App。在其他情況下(xià)是無法打開的,這裡給出了一張能否打開移動(dòng)APP的圖解:
這裡小程序給出一個(gè)場景值概念,隻有場景值為1036(還有個(gè)狀态值true或false,它決定是否能夠打開APP。場景值為1036,狀态值為true)的小程序,才能夠打開源APP,即 小程序不能打開任何App,隻能跳回分享小程序卡片的APP 。官方文(wén)檔也對這個(gè)标識做了解釋:
在小程序的生命周期内,這個(gè)狀态的初始值為 false,之後會随着小程序的每次打開(無論是啟動(dòng)還是切到前台)而改變:
1.當小程序從 1036(App 分享消息卡片) 打開時,該狀态置為 true。
2.當小程序從 1089(微信聊天主界面下(xià)拉)或 1090(長按小程序右上角菜單喚出最近使用曆史)的場景打開時,該狀态不變,即保持上一次打開小程序時該狀态的值。
3.當小程序從非 1036/1089/1090 的場景打開,該狀态置為 false。
針對第二條,1089和(hé)1090那個(gè),我的理解是小程序類似于移動(dòng)APP,它并沒有關(guān)閉,而是在後台,所以1089和(hé)1090打開小程序隻是把小程序喚到前台,所以小程序狀态不變。狀态如(rú)果為true,也可(kě)以打開移動(dòng)APP。
以上便是對小程序打開移動(dòng)應用的介紹,接下(xià)來看一下(xià)具體代碼實現。
代碼實現分享小程序打開移動(dòng)應用(iOS版本,Android類似)
首先要做的就是新建一個(gè)工程,然後集成微信分享,具體如(rú)何集成可(kě)以參見 官網集成文(wén)檔 ,集成之後,在頁面添加一個(gè)按鈕,觸發實現如(rú)下(xià):
- (IBAction)openSmallProgramAction:(id)sender {
//分享小程序的實現
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];
//原來做分享的實現
// SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
// req.text = @"分享的内容";
// req.bText = YES;
// req.scene = WXSceneSession;
// [WXApi sendReq:req];
}
這裡是所有的App都可(kě)以用上面的實現方式分享小程序麼嗎?答案是否定的。看官方文(wén)檔的說法:
移動(dòng)應用分享功能支持小程序類型分享,要求發起分享的APP與小程序屬于同一微信開放平台帳号。支持分享小程序類型消息至好友會話,不支持“分享至朋友圈”及“收藏”。
也就是說小程序分享是有限制的:
- 發起分享的App與小程序屬于同一微信開放平台賬号
- 隻支持分享小程序類型消息至好友會話(SendMessageToWXReq的scence隻支持WXSceneSession)
經過測試,一個(gè)賬号不能同時注冊 微信開放平台 和(hé) 微信公衆平台 。也就是說:如(rú)果你(nǐ)的賬号注冊了微信開放平台,那麼該賬号就不能再次注冊微信公衆平台。
微信開放平台放的是移動(dòng)APP。
微信公衆平台放的是小程序。
那官方所說的屬于同一微信開放平台賬号就不是一個(gè)賬号下(xià)既有APP又有小程序(因為小程序是在微信公衆平台開發的)。打開微信開放平台頁面之後,第一條就好理解了:
如(rú)果你(nǐ)想要在移動(dòng)APP内分享小程序,你(nǐ)必須在該APP所在的微信開放平台賬号下(xià)綁定微信小程序,這樣才可(kě)以在APP中(zhōng)實現小程序分享。這就是官方所說的APP和(hé)小程序屬于同一微信開放平台賬号。
那麼APP怎麼知道分享哪個(gè)小程序的? 或者說APP是怎麼和(hé)小程序關(guān)聯的呢(ne)?
這就要看上面的那段代碼(前提是你(nǐ)把小程序和(hé)APP放到了同一開放平台賬号下(xià)),其中(zhōng)有一行:
wxMiniObject.userName = @"gh_*************";
該userName就是小程序的userName,你(nǐ)可(kě)以登錄 微信公衆号平台|小程序 ,然後在設置—>基本設置中(zhōng)查看,裡面有個(gè)原始id,就是小程序的userName。
這樣你(nǐ)就将APP的分享和(hé)小程序關(guān)聯起來了。
還有一個(gè)問(wèn)題: 分享的小程序如(rú)何打開指定的頁面呢(ne)?
這就要看另一行代碼:
wxMiniObject.path = @"pages/index/index";
你(nǐ)需要設置一下(xià)小程序的path,這個(gè)path的頁面就是你(nǐ)點擊分享的小程序打開的頁面。這裡看一張小程序開發工具的圖:
pages所指的就是頁面,例如(rú)上圖的pages文(wén)件夾包含了detail和(hé)index和(hé)logs三個(gè)頁面,其中(zhōng):
index:指代的是信用卡列表頁。
detail:指代的是點擊列表某個(gè)item進入的詳情頁。
logs:日志頁面
所以如(rú)果你(nǐ)想跳轉到詳情頁,那麼你(nǐ)在設置wxMiniObject的path時就應該寫成“pages/detail/detail”。這樣就實現了點擊分享的小程序進入指定的頁面了(如(rú)果頁面需要參數你(nǐ)也要在分享時傳過去)。
wxml:相當于html
wxss:相當于css
這裡其實是微信小程序自己定義了後綴。
這個(gè)時候你(nǐ)分享的小程序場景值為1036,且狀态為true,如(rú)果此時你(nǐ)小程序裡面有open-type為“launchApp”的button,點擊button你(nǐ)就會跳回你(nǐ)的移動(dòng)APP啦。如(rú)果想給APP回傳内容,可(kě)以設置app-parameter。就像這個(gè)小按鈕:
<button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打開APP</button>
到此,我想你(nǐ)應該大概了解小程序支持打開移動(dòng)應用到底是怎麼回事了。
總結
小程序并不是支持打開所有移動(dòng)APP,就算是同一個(gè)微信開放平台賬号下(xià)面的移動(dòng)APP和(hé)小程序,小程序也不一定可(kě)以打開,具體還要看場景。
展望
小程序支持跳轉移動(dòng)APP是很大的進步,在小程序以後的進一步完善中(zhōng),它應該會朝着APP直接打開小程序方向邁進,而不僅僅是通(tōng)過分享打開小程序。未來我們也許會實現點擊移動(dòng)APP裡面的某個(gè)按鈕直接打開某個(gè)小程序,然後在小程序操作完成之後再次返回到移動(dòng)APP。(例如(rú)微信支付,可(kě)以從移動(dòng)APP跳轉到小程序進行微信支付,支付成功後直接返回移動(dòng)APP)