根据苹果官方微信公众平台发布的文章《小程序支持打开移动应用》,小程序新增两项功能:支持开启手机应用的标题栏区域和开启自定义。第二个功能是开发者可以自定义定义小程序菜单栏的颜色样式,根据需求自定义小程序菜单外的标题区域,比如设置标题区域的颜色。这里主要介绍支持打开手机应用的功能。支持打开手机应用,乍看之下,其实有点头条的行为。支持打开手机应用吗?让我想到的是,我可以用一个小程序打开任何手机应用程序?(答案是否定的)那我可以打开自己的App吗?(答案是有限制地打开)能打开系统自带的浏览器吗?(答案是否定的)可以打开第三方手机应用吗?(答案也是否定的)其实小程序打开移动应用是有硬性规定的。需求:移动应用分享到小程序的页面支持在用户访问时打开源应用。让我们仔细看看这个要求。大多数程序都有微信分享功能。我们经常做的是分享一张图片,一段文字或者一个网址链接,可以分享给朋友(包括群),朋友圈或者加入个人收藏,如下:我们也可以分享小程序,如图图中:上图是某抢票软件(知行)分享到微信的小程序,小伙伴们可以点击小程序帮助提速。根据官方文章,如果分享到微信的小程序中有一个按钮,实现如下:打开APP然后当这个按钮被点击时,源App被打开。其他情况下无法打开。下面是手机APP是否可以打开的图:这里小程序给出了一个场景值的概念,只有场景值是1036(还有一个状态值true或者false,决定APP是否可以打开.只有场景值为1036且status值为true的小程序才能打开源APP,即小程序不能打开任何应用,只能跳回共享小程序卡片的应用。官方文档也对这个flag做了解释:在小程序的生命周期中,这个状态的初始值为false,之后会随着小程序的每次打开(无论是启动还是切换到前台)而变化:当小程序从1036(app分享消息卡片)打开程序时,该状态设置为true。从1089(下拉微信聊天主界面)或1090(长按小程序右上角菜单呼出最近使用记录)场景打开小程序时,该状态不会改变,即会保留上次打开小程序时的状态值。从1036/1089/1090以外的场景打开小程序时,状态设置为false。关于第二条,1089和1090,我的理解是小程序类似于手机app,不是关闭的,而是在后台,所以在1089和1090上打开小程序只是把小程序调用到前台,所以小程序的状态是恒定的。如果状态为真,也可以打开手机APP。以上就是打开手机应用的小程序介绍。接下来我们看一下具体的代码实现。打开手机应用(iOS版,安卓类似)首先要新建一个项目,然后集成微信分享。具体如何集成,请参考官网集成文档。集成后,在页面添加一个按钮触发实现如下:-(IBAction)openSmallProgramAction:(id)sender{//分享小程序的实现WXMiniProgramObject*wxMiniObject=[WXMiniProgramObjectobject];wxMiniObject.userName=@"gh_**************";wxMiniObject.path=@"pages/index/index";//WXMediaMessage*message=[WXMediaMessagemessage];message.title=@"我是小程序";message.description=@"我是一个用来测试打开App的小程序";message.mediaObject=wxMiniObject;SendMessageToWXReq*req=[[SendMessageToWXReqalloc]init];req.message=message;req.scene=WXSceneSession;[WXApisendReq:req];//分享的原始实现//SendMessageToWXReq*req=[[SendMessageToWXReqalloc]init];//req.text=@"分享内容";//req.bText=YES;//req.scene=WXSceneSession;//[WXApisendReq:req];}这里所有的App都是用上面的实现方式来分享小程序吗?答案是不。根据官方文档:手机APP分享功能支持小程序类型分享,要求发起分享的APP和小程序属于同一个微信开放平台账号。支持分享小程序类消息到好友对话,不支持“分享到朋友圈”和“收藏”。也就是说小程序的分享是有限制的:app和发起分享的小程序属于同一个微信开放平台账号,只支持分享小程序类型的消息给好友会话(仅限SendMessageToWXReq场景)支持WXSceneSession)。经测试,一个账号不能同时注册。微信开放平台和微信公众平台。也就是说:如果你的账号是在微信开放平台上注册的,那么这个账号是不能再在微信公众平台上注册的。微信开放平台投放移动应用。微信公众平台放小程序。官方所说的属于同一个微信开放平台账号,并不是说同一个账号下既有APP也有小程序(因为小程序是在微信公众平台开发的)。打开微信开放平台页面后,第一篇就很容易理解了:如果要在手机APP中分享小程序,必须在APP所在的微信开放平台账号下绑定微信小程序,这样才能在手机APP中分享小程序。APP内实现小程序分享。这就是官方所说的APP和小程序属于同一个微信开放平台账号。那么APP怎么知道要分享哪个小程序呢?或者APP是如何关联小程序的?这就要看上面的代码了(前提是你把小程序和APP放在同一个开放平台账号下),其中有一行:wxMiniObject.userName=@"gh_*************";userName为小程序的用户名,可以登录微信公众号平台|applet,然后set—>在basicsettings里面打勾,里面有一个原来的id,就是小程序的userName。这样你就会把APP的分享和小程序关联起来。还有一个问题:共享小程序如何打开指定页面?这取决于另外一行代码:wxMiniObject.path=@"pages/index/index";需要设置小程序的路径,这个路径的页面就是你点击分享的小程序打开的页面。下面是一个小程序开发工具的图片:pages指的是页面。例如上图中的pages文件夹包含三个页面:detail、index和logs,其中:index:指的是信用卡列表页面。detail:指在列表中点击某一项进入的详情页面。logs:日志页,所以如果要跳转到详情页,那么在设置wxMiniObject的路径时要写“pages/detail/detail”。这样点击分享的小程序就可以进入指定的页面了(如果页面需要参数,分享的时候也要传进去)。wxml:相当于htmlwxss:相当于css这里其实就是微信小程序自己定义的后缀。此时你分享的小程序的场景值为1036,状态为true。如果您的小程序中有一个带有开放式“launchApp”的按钮,点击该按钮,您将跳转回您的手机APP。如果要返回内容给APP,可以设置app-parameter。就像这个小按钮:OpenAPP到这里,我想你应该对小程序支持什么有了一个大概的了解打开手机应用程序怎么了。综上所述,小程序不支持打开所有手机应用。即使是同一个微信开放平台账号下的手机应用和小程序,也不一定能打开小程序,视场景而定。放眼望去,小程序支持跳转到手机APP是一个很大的进步。在小程序的进一步完善中,应该朝着APP直接打开小程序的方向发展,而不仅仅是通过分享打开小程序。以后我们可能会在手机APP中点击一个按钮,直接打开一个小程序,等小程序运行完毕,再回到手机APP。(比如微信支付,微信支付可以从手机APP跳转到小程序,支付成功后直接返回手机APP。)小程序支持跳转到手机APP是一个很大的进步。在小程序的进一步完善中,应该会朝着APP直接打开小程序的方向发展,而不仅仅是通过分享打开小程序。以后我们可能会在手机APP中点击一个按钮,直接打开一个小程序,等小程序运行完毕,再回到手机APP。(比如微信支付,可以从手机APP跳转到微信支付小程序,支付成功后直接返回手机APP)