问题背景
在 iOS平台集成AGCAppLinking是遇到了问题和疑惑。提问如下:
使用universallink 或者 url schema的app link都能拉起app,但是判断是否app link返回false,applink的回调没反应?
1 创建了相关的iOS 项目,并创建了应用,设置了相关信息包括bundle id, appid, team id等等
2 创建了app link, universal link的applink 扫码后拉起app 无法回调,
url schema的app link扫码后能拉起app,可以收到回调获取deeplink(但这种,如果我自己用草料生成一个二维码 比如bdwapp://betterwood.com/bdxx)扫码后拉起app 回调没反应。 这两种情况都没找到原因,求解?
紧接着:
schema的 applinking 已经通了,但是universal link的 app linking 不行,调let isAppLinking = AGCAppLinking.instance().openDeepLinkURL(url)一直返回false,
1 Appstore id, 团队id 等都已经配置,agconnect-services.plist也更新到了项目中
2 App linking中的网址允许清单也设置了,然后生成了一个 link,扫二维码能拉起app,就是
AGCAppLinking.instance().openDeepLinkURL(url) 一直返回false,下面回调没有触发
AGCAppLinking.instance().handle { link, error in
if let l = link {
let deepLink = l.deepLink
//todo ...
}
}
解决该问题
首先,关于其他平台的生成的二维码能拉起应用,却没有回掉的原因如下:
在AGC平台生成的AppLinking(或者SDK生成的ShortLink或者LongLink),才可以收到SDK的回调获取deeplink。
草料生成的二维码,不是AGC AppLinking,无法和 AGC AppLinking协作的。它是通过您项目里配置的url schema唤起应用,但不能通过AGC AppLinking获取deeplink。
其次,以Universal Link方式接收,需满足以下配置:
1、生成App Linking域名的资产校验文件。
在https://your_applinking_url_prefix/apple-app-site-association,是否能访问到资产校验文件
2、声明iOS应用关联的域名。
在应用的Xcode项目的Signing&Capabilities标签页中,添加Associated Domain功能,并在Domains中添加要支持的域名,格式为“applinks:your_applinking_url_prefix”
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-applinking-receivelinks-ios-0000001054025701
3、Universal Link方式,Appdelegate调用的是以下的方法
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
let isAppLinking = AGCAppLinking.instance().continueUserActivity(userActivity)
return isAppLinking
}
问题根因
AGCAppLinking是基于url schema或Universal Link两种方式来拉起App的,这两种方式都有各自的配置。所以集成时,如果忽略掉了一些细节,对顺利集成AGCAppLinking会造成影响的。
相关参考链接:
欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh
标签:AGCAppLinking,url,AGC,app,iOS,applink,link,applinking From: https://www.cnblogs.com/developer-huawei/p/16838839.html