iOS微信分享及Universal Links

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,不然导致无法分享。

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值