美文网首页iOS开发常用知识点
iOS 分享小程序及配置Universal Links

iOS 分享小程序及配置Universal Links

作者: Homey313 | 来源:发表于2020-04-15 15:20 被阅读0次

    最近要添加一个分享小程序的功能,顺便把以前手动集成的陈年SDK干掉,目前新的SDK多了个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的入口提示(如下图)


    image

    b)在苹果官网验证: 验证地址

    如果出现上图,那就证明符合规则

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

    1.填写app相关信息,包括刚刚配置的通用链接,获得appid
    [站外图片上传中...(image-f1c033-1586935178974)]

    2.在URL Type中添加Schemes,填写注册的appid


    image
    1. 在 “info.plist”中的“LSApplicationQueriesSchemes“添加weixinweixinULAPI image

    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配置)


    image

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

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

    相关文章

      网友评论

        本文标题:iOS 分享小程序及配置Universal Links

        本文链接:https://www.haomeiwen.com/subject/qepcvhtx.html