自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

小程序支持打開(kāi)移動(dòng)應(yīng)用到底是怎么回事?

移動(dòng)開(kāi)發(fā)
從蘋(píng)果官方微信號(hào)微信公共平臺(tái)發(fā)布的文章《小程序支持打開(kāi)移動(dòng)應(yīng)用》來(lái)看,小程序新增了兩個(gè)功能:支持打開(kāi)移動(dòng)應(yīng)用 和標(biāo)題欄區(qū)域開(kāi)放自定義。乍一看其實(shí)有點(diǎn)標(biāo)題黨的行為,支持打開(kāi)移動(dòng)應(yīng)用?

從蘋(píng)果官方微信號(hào)微信公共平臺(tái)發(fā)布的文章《小程序支持打開(kāi)移動(dòng)應(yīng)用》來(lái)看,小程序新增了兩個(gè)功能:

  • 支持打開(kāi)移動(dòng)應(yīng)用
  • 標(biāo)題欄區(qū)域開(kāi)放自定義

針對(duì)第二個(gè)功能,就是開(kāi)發(fā)者可以自定義小程序菜單欄的顏色風(fēng)格,根據(jù)需求,對(duì)小程序菜單外的標(biāo)題區(qū)域進(jìn)行自定義,比如設(shè)置標(biāo)題區(qū)域的顏色。這里主要介紹一下支持打開(kāi)移動(dòng)應(yīng)用的功能。

支持打開(kāi)移動(dòng)應(yīng)用

乍一看其實(shí)有點(diǎn)標(biāo)題黨的行為,支持打開(kāi)移動(dòng)應(yīng)用?

  • 讓我想到的是我可以用小程序打開(kāi)任何移動(dòng)應(yīng)用?(答案是不能)
  • 那我是不是可以打開(kāi)自己的App?(答案是有限制性地打開(kāi))
  • 是不是可以打開(kāi)系統(tǒng)自帶的瀏覽器?(答案是不能)
  • 是不是可以打開(kāi)第三方的移動(dòng)應(yīng)用呢?(答案也是不能)

其實(shí),小程序打開(kāi)移動(dòng)應(yīng)用有一條硬性要求:從移動(dòng)應(yīng)用分享至小程序的頁(yè)面,用戶(hù)訪問(wèn)時(shí)支持打開(kāi)來(lái)源應(yīng)用。接下來(lái)進(jìn)一步解讀一下這條要求。

大部分程序都有微信分享功能,我們常做的就是將一個(gè)圖片、一段文字亦或是一個(gè)URL鏈接進(jìn)行分享,可以分享給好友(包括群)、朋友圈或者是添加到個(gè)人收藏,如下:

小程序支持打開(kāi)移動(dòng)應(yīng)用到底是怎么回事?

我們還可以分享小程序,如圖:

小程序支持打開(kāi)移動(dòng)應(yīng)用到底是怎么回事?

上面是一個(gè)搶票軟件(智行)分享到微信的一個(gè)小程序,好友可以點(diǎn)擊小程序幫忙加速。按照官方文章的說(shuō)法,分享到微信的小程序里面如果有一個(gè)按鈕,實(shí)現(xiàn)如下:

  1. <button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打開(kāi)APP</button> 

那么當(dāng)點(diǎn)擊此按鈕時(shí),就會(huì)打開(kāi)源App。在其他情況下是無(wú)法打開(kāi)的,這里給出了一張能否打開(kāi)移動(dòng)APP的圖解:

小程序支持打開(kāi)移動(dòng)應(yīng)用到底是怎么回事?

這里小程序給出一個(gè)場(chǎng)景值概念,只有場(chǎng)景值為1036(還有個(gè)狀態(tài)值true或false,它決定是否能夠打開(kāi)APP。場(chǎng)景值為1036,狀態(tài)值為true)的小程序,才能夠打開(kāi)源APP,即小程序不能打開(kāi)任何App,只能跳回分享小程序卡片的APP。官方文檔也對(duì)這個(gè)標(biāo)識(shí)做了解釋?zhuān)?/p>

在小程序的生命周期內(nèi),這個(gè)狀態(tài)的初始值為 false,之后會(huì)隨著小程序的每次打開(kāi)(無(wú)論是啟動(dòng)還是切到前臺(tái))而改變:

  1. 當(dāng)小程序從 1036(App 分享消息卡片) 打開(kāi)時(shí),該狀態(tài)置為 true。
  2. 當(dāng)小程序從 1089(微信聊天主界面下拉)或 1090(長(zhǎng)按小程序右上角菜單喚出最近使用歷史)的場(chǎng)景打開(kāi)時(shí),該狀態(tài)不變,即保持上一次打開(kāi)小程序時(shí)該狀態(tài)的值。
  3. 當(dāng)小程序從非 1036/1089/1090 的場(chǎng)景打開(kāi),該狀態(tài)置為 false。

針對(duì)第二條,1089和1090那個(gè),我的理解是小程序類(lèi)似于移動(dòng)APP,它并沒(méi)有關(guān)閉,而是在后臺(tái),所以1089和1090打開(kāi)小程序只是把小程序喚到前臺(tái),所以小程序狀態(tài)不變。狀態(tài)如果為true,也可以打開(kāi)移動(dòng)APP。

以上便是對(duì)小程序打開(kāi)移動(dòng)應(yīng)用的介紹,接下來(lái)看一下具體代碼實(shí)現(xiàn)。

代碼實(shí)現(xiàn)分享小程序打開(kāi)移動(dòng)應(yīng)用(iOS版本,Android類(lèi)似)

首先要做的就是新建一個(gè)工程,然后集成微信分享,具體如何集成可以參見(jiàn)官網(wǎng)集成文檔,集成之后,在頁(yè)面添加一個(gè)按鈕,觸發(fā)實(shí)現(xiàn)如下:

  1. - (IBAction)openSmallProgramAction:(id)sender { 
  2.     //分享小程序的實(shí)現(xiàn) 
  3.     WXMiniProgramObject *wxMiniObject = [WXMiniProgramObject object]; 
  4.     wxMiniObject.userName = @"gh_*************"
  5.     wxMiniObject.path = @"pages/index/index"
  6.     // 
  7.     WXMediaMessage *message = [WXMediaMessage message]; 
  8.     message.title = @"我是小程序"
  9.     message.description = @"我是用來(lái)測(cè)試打開(kāi)App的小程序"
  10.     message.mediaObject = wxMiniObject; 
  11.      
  12.     SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init]; 
  13.     req.message = message; 
  14.     req.scene = WXSceneSession; 
  15.     [WXApi sendReq:req]; 
  16.    //原來(lái)做分享的實(shí)現(xiàn) 
  17. //    SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init]; 
  18. //    req.text = @"分享的內(nèi)容"
  19. //    req.bText = YES; 
  20. //    req.scene = WXSceneSession; 
  21. //    [WXApi sendReq:req]; 

這里是所有的App都可以用上面的實(shí)現(xiàn)方式分享小程序么嗎?答案是否定的。看官方文檔的說(shuō)法:

  • 移動(dòng)應(yīng)用分享功能支持小程序類(lèi)型分享,要求發(fā)起分享的APP與小程序?qū)儆谕晃⑿砰_(kāi)放平臺(tái)帳號(hào)。支持分享小程序類(lèi)型消息至好友會(huì)話(huà),不支持“分享至朋友圈”及“收藏”。

也就是說(shuō)小程序分享是有限制的:

  • 發(fā)起分享的App與小程序?qū)儆谕晃⑿砰_(kāi)放平臺(tái)賬號(hào)
  • 只支持分享小程序類(lèi)型消息至好友會(huì)話(huà)(SendMessageToWXReq的scence只支持WXSceneSession)

經(jīng)過(guò)測(cè)試,一個(gè)賬號(hào)不能同時(shí)注冊(cè)微信開(kāi)放平臺(tái)和微信公眾平臺(tái)。也就是說(shuō):如果你的賬號(hào)注冊(cè)了微信開(kāi)放平臺(tái),那么該賬號(hào)就不能再次注冊(cè)微信公眾平臺(tái)。

  • 微信開(kāi)放平臺(tái)放的是移動(dòng)APP。
  • 微信公眾平臺(tái)放的是小程序。

那官方所說(shuō)的屬于同一微信開(kāi)放平臺(tái)賬號(hào)就不是一個(gè)賬號(hào)下既有APP又有小程序(因?yàn)樾〕绦蚴窃谖⑿殴娖脚_(tái)開(kāi)發(fā)的)。打開(kāi)微信開(kāi)放平臺(tái)頁(yè)面之后,***條就好理解了:

小程序支持打開(kāi)移動(dòng)應(yīng)用到底是怎么回事?

小程序支持打開(kāi)移動(dòng)應(yīng)用到底是怎么回事?

如果你想要在移動(dòng)APP內(nèi)分享小程序,你必須在該APP所在的微信開(kāi)放平臺(tái)賬號(hào)下綁定微信小程序,這樣才可以在APP中實(shí)現(xiàn)小程序分享。這就是官方所說(shuō)的APP和小程序?qū)儆谕晃⑿砰_(kāi)放平臺(tái)賬號(hào)。

那么APP怎么知道分享哪個(gè)小程序的? 或者說(shuō)APP是怎么和小程序關(guān)聯(lián)的呢?

這就要看上面的那段代碼(前提是你把小程序和APP放到了同一開(kāi)放平臺(tái)賬號(hào)下),其中有一行:

  1. wxMiniObject.userName = @"gh_*************"

該userName就是小程序的userName,你可以登錄微信公眾號(hào)平臺(tái)|小程序,然后在設(shè)置—>基本設(shè)置中查看,里面有個(gè)原始id,就是小程序的userName。

這樣你就將APP的分享和小程序關(guān)聯(lián)起來(lái)了。

還有一個(gè)問(wèn)題:分享的小程序如何打開(kāi)指定的頁(yè)面呢?

這就要看另一行代碼:

  1. wxMiniObject.path = @"pages/index/index"

你需要設(shè)置一下小程序的path,這個(gè)path的頁(yè)面就是你點(diǎn)擊分享的小程序打開(kāi)的頁(yè)面。這里看一張小程序開(kāi)發(fā)工具的圖:

小程序支持打開(kāi)移動(dòng)應(yīng)用到底是怎么回事?

pages所指的就是頁(yè)面,例如上圖的pages文件夾包含了detail和index和logs三個(gè)頁(yè)面,其中:

  • index:指代的是信用卡列表頁(yè)。
  • detail:指代的是點(diǎn)擊列表某個(gè)item進(jìn)入的詳情頁(yè)。
  • logs:日志頁(yè)面

所以如果你想跳轉(zhuǎn)到詳情頁(yè),那么你在設(shè)置wxMiniObject的path時(shí)就應(yīng)該寫(xiě)成“pages/detail/detail”。這樣就實(shí)現(xiàn)了點(diǎn)擊分享的小程序進(jìn)入指定的頁(yè)面了(如果頁(yè)面需要參數(shù)你也要在分享時(shí)傳過(guò)去)。

  • wxml:相當(dāng)于html
  • wxss:相當(dāng)于css

這里其實(shí)是微信小程序自己定義了后綴。

這個(gè)時(shí)候你分享的小程序場(chǎng)景值為1036,且狀態(tài)為true,如果此時(shí)你小程序里面有open-type為“launchApp”的button,點(diǎn)擊button你就會(huì)跳回你的移動(dòng)APP啦。如果想給APP回傳內(nèi)容,可以設(shè)置app-parameter。就像這個(gè)小按鈕:

  1. <button open-type="launchApp" app-parameter="wechat" binderror="launchAppError">打開(kāi)APP</button> 

到此,我想你應(yīng)該大概了解小程序支持打開(kāi)移動(dòng)應(yīng)用到底是怎么回事了。

總結(jié)

小程序并不是支持打開(kāi)所有移動(dòng)APP,就算是同一個(gè)微信開(kāi)放平臺(tái)賬號(hào)下面的移動(dòng)APP和小程序,小程序也不一定可以打開(kāi),具體還要看場(chǎng)景。

展望

小程序支持跳轉(zhuǎn)移動(dòng)APP是很大的進(jìn)步,在小程序以后的進(jìn)一步完善中,它應(yīng)該會(huì)朝著APP直接打開(kāi)小程序方向邁進(jìn),而不僅僅是通過(guò)分享打開(kāi)小程序。未來(lái)我們也許會(huì)實(shí)現(xiàn)點(diǎn)擊移動(dòng)APP里面的某個(gè)按鈕直接打開(kāi)某個(gè)小程序,然后在小程序操作完成之后再次返回到移動(dòng)APP。(例如微信支付,可以從移動(dòng)APP跳轉(zhuǎn)到小程序進(jìn)行微信支付,支付成功后直接返回移動(dòng)APP)

小程序支持跳轉(zhuǎn)移動(dòng)APP是很大的進(jìn)步,在小程序以后的進(jìn)一步完善中,它應(yīng)該會(huì)朝著APP直接打開(kāi)小程序方向邁進(jìn),而不僅僅是通過(guò)分享打開(kāi)小程序。未來(lái)我們也許會(huì)實(shí)現(xiàn)點(diǎn)擊移動(dòng)APP里面的某個(gè)按鈕直接打開(kāi)某個(gè)小程序,然后在小程序操作完成之后再次返回到移動(dòng)APP。(例如微信支付,可以從移動(dòng)APP跳轉(zhuǎn)到小程序進(jìn)行微信支付,支付成功后直接返回移動(dòng)APP)

責(zé)任編輯:未麗燕 來(lái)源: 張貴的站點(diǎn)
相關(guān)推薦

2023-10-12 08:54:20

Spring事務(wù)設(shè)置

2022-04-15 08:54:39

PythonAsync代碼

2021-10-15 21:16:00

手機(jī)內(nèi)存漏洞

2019-07-23 15:34:29

MySQL存儲(chǔ)引擎

2015-05-29 09:34:13

2013-01-18 11:28:27

應(yīng)用推廣

2018-03-13 10:32:43

2023-03-29 08:24:30

2022-05-26 11:36:12

APK文件小米

2020-02-18 11:19:36

物聯(lián)網(wǎng)病毒物聯(lián)網(wǎng)IOT

2010-04-20 09:55:37

2013-11-18 10:34:00

企業(yè)移動(dòng)化移動(dòng)信息化

2020-08-12 09:10:16

AI芯片AI人工智能

2022-01-25 20:23:21

聯(lián)邦通信委員會(huì)聯(lián)邦航空管理局5G

2020-11-19 14:28:02

MacBookiOS蘋(píng)果

2021-06-04 11:10:04

JavaScript開(kāi)發(fā)代碼

2020-02-04 17:42:17

寬帶運(yùn)營(yíng)商攜號(hào)轉(zhuǎn)網(wǎng)

2021-05-11 11:51:15

飛機(jī)Wi-Fi通信

2013-04-18 09:56:05

2023-03-05 15:41:58

MySQL日志暴漲
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)