App 分享微信小程序功能介绍和业务方案分析 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
samding123
V2EX    程序员

App 分享微信小程序功能介绍和业务方案分析

  •  
  •   samding123 2018-01-25 21:24:10 +08:00 5293 次点击
    这是一个创建于 2894 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天微信小程序新增了支持跳转 App 的功能,算是一次比较大的突破,我也第一时间体验了一下该功能,App 和小程序之间的跳转还是比较灵活的。

    屏幕快照 2018-01-25 下午 7.05.46.png

    小程序支持打开移动应用

    逻辑图

    因为需要用户主动触发才能打开 APP,所以该功能不由 API 来调用,需要用open-type的值设置为launchApp<button>组件的点击来触发。

    当小程序从 APP 分享消息卡片的场景打开时(场景值 1036,APP 分享小程序文档 iOS参见,Android参见),小程序会获得打开 APP 的能力,此时用户点击按钮可以打开分享该卡片的 APP。即小程序不能打开任意 APP,只能跳回分享该小程序卡片的 APP。

    在一个小程序的生命周期内,只有在特定条件下,才具有打开 APP 的能力。打开 APP 的能力可以理解为由小程序框架在内部管理的一个状态,为 true 则可以打开 APP,为 false 则不可以打开 APP。

    在小程序的生命周期内,这个状态的初始值为 false,之后会随着小程序的每次打开(无论是启动还是切到前台)而改变:

    • 当小程序从 1036 ( App 分享消息卡片) 打开时,该状态置为 true。
    • 当小程序从 1089 (微信聊天主界面下拉)或 1090 (长按小程序右上角菜单唤出最近使用历史)的场景打开时,该状态不变,即保持上一次打开小程序时该状态的值。
    • 当小程序从非 1036/1089/1090 的场景打开,该状态置为 false。

    使用方法

    iOS

    下载最新的微信 SDK,或使用 CocoaPods 更新。

    分享微信小程序:

    屏幕快照 2018-01-25 下午 7.32.50.png

    1. 第一个字段 WebpageUrl 为备用链接,兼容低版本的微信客户端
    2. userName 为小程序的原始 id,可以在小程序中查看
    3. path 为小程序中页面路径
    4. Description 为描述,等同于小程序中 onShareAppMessage 方法中的 title
    5. ThumbImage 和 hdImageData 为分享图片的信息,需要小于 128k,因此在分享前需要先下载要分享的图片,并压缩,最后 resize 到 500*400(小程序卡片图片要求比例是 5 比 4)
    - (void)downloadCoverImage{ SDWebImageManager *manager = [SDWebImageManager sharedManager]; __weak typeof(self) weakSelf = self; [manager loadImageWithURL:self.item.itemCover.url options:0 progress:^(NSInteger receivedSize, NSInteger expectedSizem, NSURL *targetUrl) { //NSLog(@"receiveSize:%ld,expectedSize:%ld",(long)receivedSize,(long)expectedSize); } completed:^(UIImage *image,NSData *data, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { if (image) { NSData *imageData = UIImageJPEGRepresentation(image, 0.1); weakSelf.hdImageData = UIImageJPEGRepresentation(image, 0.1); weakSelf.thumbImage = [[[UIImage alloc]initWithData:data] scaledToSize:CGSizeMake(500, 400)]; weakSelf.shareImage = [[[UIImage alloc]initWithData:imageData] scaledToSize:CGSizeMake(100, 100)]; } }]; self.sharestr = [NSString stringWithFormat:@"只需%@元,广州女装源头货,买手精选,一件起批,赶紧来上新进货吧!",self.item.salePrice]; } 
    1. withShareTicked 为 YES 时,是否带 shareTicket,可以通过 wx.getShareInfo 方法获取群对当前小程序的唯一 ID(OpenGid)
    2. miniProgramType 表示小程序类型,0 是正式版,1 是开发版,2 是体验版

    分享效果: 131516879901_.pic.jpg

    小程序端

    需要将 <button> 组件 open-type 的值设置为 launchApp。如果需要在打开 APP 时向 APP 传递参数,可以设置 app-parameter 为要传递的参数。通过 binderror 可以监听打开 APP 的错误事件。

    <button open-type="launchApp" app-parameter="itemId=12345&userId=1234" binderror="launchAppError">打开 APP</button> 

    若分享成功后,微信唤起 App,并传递 app-parameter 参数到 App: App 中处理微信小程序传递参数

    在 App 中添加 WXApiDelegate 中的 onReq 方法,处理参数。

    如果唤起 App 失败,在 binderror 对应的方法中处理唤起失败后的逻辑:

    Page({ launchAppError: function(e) { console.log(e.detail.errMsg) } }) 

    如果是没有安装 App,可以使用 wx.previewImage 的方法弹出引导关注公众号的图片文案。 未命名.gif

    都知道从公众号文章或者底部菜单是可以调转到小程序的,从小程序是不可以调转回公众号的,从上面的动画中,你有没有发现亮点?这里有个小技巧,在微信小程序中长按 previewImage 打开的图片,是可以识别二维码的,接着直接跳转到公众号!

    同学们不要开心的太早,这个功能不是每次都能实现的,有兴趣的可以自己试一下。

    131516886582_.pic.jpg

    1 条回复    2018-07-04 22:48:16 +08:00
    xmlyqing00
        1
    xmlyqing00  
       2018-07-04 22:48:16 +08:00
    微信群还可以加吗?我最近做好了一个小程序,交流交流。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3946 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 05:24 PVG 13:24 LAX 21:24 JFK 00:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86