iOS微信分享及Universal Links

zz/2023/6/3 16:20:25

iOS 分享小程序及配置Universal Links

    • 1.集成openSDK
    • 2.配置Universal Links
            • 1.服务器那边注册域名
            • 2.打开Capabilities → Associated Domains开关,将Universal Links域名加到配置上:
            • 3. 验证你的Universal Links
    • 3.在微信开放平台注册APP
    • 4.分享小程序
            • 1.向微信终端注册你的 id
            • 2.分享小程序

1.集成openSDK

1.手动集成。👉下载SDK.
2.通过 CocoaPods 集成。在工程的 Podfile 里面添加以下代码:

pod ‘WechatOpenSDK’

保存并执行 pod install。

2.配置Universal Links

微信对Universal Links配置要求
a)Universal Links必须支持https
b)Universal Links配置的paths不能带query参数
c)微信使用Universal Links拉起第三方App时,会在Universal Links末尾拼接路径和参数,因此App配置的paths必须加上通配符/*

可以根据苹果文档配置,具体步骤如下:

1.服务器那边注册域名

服务器创建一个名字叫做apple-app-site-association,包含固定格式的json文件,不必添加.json的后缀名,放在https服务器的根目录下,文件中配置如下:

{"applinks": {"apps": [],"details": [{"appID": "TeamID.BundleID","paths": [ "*" ]}]}
}

登陆开发者中心,在Account -> Membership里面可以找到Team ID

如果服务器下面包括多个APP,可以在paths里面添加路径区分,例如:

 "details": [{"appID": "TeamID.BundleID","paths": [ "/app1/*" ]}{"appID": "TeamID.BundleID","paths": [ "/app2/*" ]}]
2.打开Capabilities → Associated Domains开关,将Universal Links域名加到配置上:

在这里插入图片描述例如:applinks:help.wechat.com

3. 验证你的Universal Links

a) Safari输入Universal Links(包括完整路径)+随机字符串(例如: abc)
https://help.wechat.com/sdksample/

下拉页面检查是否有打开app的入口提示(如下图)
在这里插入图片描述

b)在苹果官网验证: 验证地址
如果出现下图,那就证明符合规则
在这里插入图片描述

3.在微信开放平台注册APP

1.填写app相关信息,包括刚刚配置的通用链接,获得appid
在这里插入图片描述

2.在URL Type中添加Schemes,填写注册的appid
在这里插入图片描述
3. 在 “info.plist”中的“LSApplicationQueriesSchemes“添加weixinweixinULAPI在这里插入图片描述

4.分享小程序

1.向微信终端注册你的 id
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// 向微信注册[WXApi registerApp:APP_ID
universalLink:UNIVERSAL_LINK];return YES;
}- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}

如果你的程序要实现和微信终端交互的具体请求与回应,需要实现 WXApiDelegate 协议的两个方法

-(void) onReq:(BaseReq*)reqonReq是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用 sendRsp 返回。在调用 sendRsp 返回时,会切回到微信终端程序界面。
-(void) onResp:(BaseResp*)resp如果第三方程序向微信发送了 sendReq 的请求,那么 onResp 会被回调。sendReq 请求调用后,会切到微信终端程序界面。
2.分享小程序
WXMiniProgramObject *object = [WXMiniProgramObject object];
object.webpageUrl = webpageUrl;   // 兼容低版本的网页链接
object.userName = userName;   // 小程序的userName
object.path = path;     // 小程序的页面路径
object.hdImageData = hdImageData;   // 小程序新版本的预览图二进制数据,限制大小不超过128KB,自定义图片建议长宽比是 5:4
object.withShareTicket = withShareTicket;  // 是否使用带shareTicket的分享
object.miniProgramType = programType;  // 小程序的类型,默认正式版 
WXMediaMessage *message = [WXMediaMessage message];
message.title = @"小程序标题";
message.description = @"小程序描述";
message.thumbData = nil;  // 兼容旧版本节点的图片,小于32KB,新版本优先// 使用WXMiniProgramObject的hdImageData属性
message.mediaObject = object;
SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
req.message = message;
req.scene = WXSceneSession;  / /目前只支持会话
[WXApi sendReq:req];

官方提示:

1.发起分享的App与小程序属于同一微信开放平台帐号。
2.支持分享小程序类型消息至会话,暂不支持分享至朋友圈。
3.若客户端版本低于6.5.6或在iPad客户端接收,小程序类型分享将自动转成网页类型分享。开发者必须填写网页链接字段,确保低版本客户端能正常打开网页链接。

当用户首次使用新版本SDK发起分享时,将会出现如下交互流程:从App拉起微信-出现“正在连接”页面-返回App-重新打开微信。以上是新的安全验证流程,每个用户在首次使用时会出现上述跳转。(如同一用户多次使用分享都出现跳转,请Universal Links配置)
在这里插入图片描述

温馨提醒:
1.同一个微信开放平台帐号下的app和小程序不用特意添加关联,就可以分享。
2.webpageUrl这个链接必须设置,不然调不起微信
3.如果APP有转让到其他开发者账号的行为,记得更新Universal Links,更换新的TeamID,不然导致无法分享。

这是以小程序示例,微信分享及收藏目前支持文字、图片、音乐、视频、网页、小程序共六种类型(海外应用支持网页、小程序类型分享),官方文档上面写的很清楚,详情见👉分享指南

http://www.ngui.cc/zz/2390056.html

相关文章

IOS微信浏览器返回事件监听问题

业务需求&#xff1a;从主页进入A订单页面&#xff0c;然后经过各种刷新或点标签加载后点左上角的返回直接返回到主页 采取方法&#xff1a;采用onpopstate事件监听url改变&#xff0c;从而跳转到主页 遇到的问题&#xff1a;安卓上测试没问题&#xff1b;苹果手机微信里进入A页…

ios微信支付失败 php,iOS 微信支付疑难杂症。

哈喽&#xff0c;大家好&#xff0c;感谢您来阅读我的文章&#xff0c;作为iOS开发者&#xff0c;集成各类支付是家常便饭之事&#xff0c;今天我来给大家推荐几个不常见的微信支付问题。最近&#xff0c;在项目的反馈版块中&#xff0c;收到了这么一位APP用户的反馈&#xff0…

易达项目进度第三天

昨天&#xff1a;借阅了关于andriod studio的书籍&#xff0c;并学习了软件的使用 今天&#xff1a;编写了一个简单的显示图片文字的APP&#xff0c;并且模拟成功 明天&#xff1a;计划看UI设计并且注重学习UI布局和美化 转载于:https://www.cnblogs.com/ZHAOHAN666/p/6810425.…

易达项目进度第二天

昨天&#xff1a;完成了任务分配 今天&#xff1a;借阅了关于andriod studio的书籍&#xff0c;并学习了软件的使用 明天&#xff1a;编写一个可以显示图片和文字的小型APP 转载于:https://www.cnblogs.com/ZHAOHAN666/p/6810405.html

易达项目进度第一天

软件开始制作的第一天&#xff0c;我们一起讨论了各自的任务 在电脑上搭建了andriod studio的环境 计划明天去借关于安卓APP开发的书 目前遇到的困难就是对于andriod studio的使用问题 转载于:https://www.cnblogs.com/ZHAOHAN666/p/6810383.html

易达团队项目计划表

2.软件的主要功能有&#xff1a;&#xff08;1&#xff09;实现服务器端可以接收安卓端上传预订信息以及处理信息&#xff08;2&#xff09;实现安卓端软件的开发&#xff0c;可以实现预定、后台处理等&#xff08;3&#xff09;实现注册登录功能&#xff08;4&#xff09;实现…

ELTEK电源维修SMPS5000SIL易达整流模块维修概述

常见故障分析与维修&#xff1a;工作中听到轻微“咖啪”声,之看中使用时发现激光输出功率明显下降。 电源输出功率衰减有三种可能的原因:本身输出功率衰减&#xff1b;光纤折断导致能量传输率下降&#xff1b;激光机器光学部分污染或损坏。本身导功率衰减是一个随着使用时间慢…

个人帐目管理系统java_月光软件站 - 编程文档 - Java - 实战EdaEagle——个人帐目管理系统(一)...

实战EdaEagle——个人帐目管理系统(一)作者&#xff1a;未知 来源&#xff1a;月光软件站 加入时间&#xff1a;2005-2-28 月光软件站点击此出下载EdaEagle点击此处下载个人帐目管理源码EdaEagle,既原来的edainfo-model,现在正试更名为EdaEagle,Eagle是鹰的意思,希望本套组件能…

软件度量

软件度量&#xff08;software measurement&#xff09;是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程&#xff0c;目的在于对此加以理解、预测、评估、控制和改善。没有软件度量&#xff0c;就不能从软件开发的暗箱中跳将出来。通过软件度量可…

软件度量的方法体系

http://se.csai.cn/SoftQuality/No095.htm 项目度量   项目度量是针对软件开发项目的特定度量&#xff0c;目的在于度量项目规模、项目成本、项目进度、顾客满意度等&#xff0c;辅助项目管理进行项目控制。 规模度量    软件开发项目规模度量(size measurement)是估算软…