【AGC】HarmonyOS鸿蒙Next中iOS的applink的回调没反应问题分析
【AGC】HarmonyOS鸿蒙Next中iOS的applink的回调没反应问题分析
问题背景
在 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”
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会造成影响的。
相关参考链接:
更多关于【AGC】HarmonyOS鸿蒙Next中iOS的applink的回调没反应问题分析的实战教程也可以访问 https://www.itying.com/category-93-b0.html
学习
更多关于【AGC】HarmonyOS鸿蒙Next中iOS的applink的回调没反应问题分析的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
学习了
学习了
在HarmonyOS鸿蒙Next中,iOS的AppLink回调无反应可能涉及以下几个方面:
-
AppLink配置:确保在iOS端和鸿蒙端都正确配置了AppLink。iOS端需要在
Info.plist
中设置CFBundleURLTypes
,鸿蒙端需要在config.json
中配置abilities
的uri
和type
。 -
回调函数实现:检查鸿蒙端是否实现了正确的回调函数。在
Ability
中,onStart
或onNewIntent
方法需要处理AppLink的URI。 -
URI匹配:确认AppLink的URI格式与配置的URI模式匹配。iOS端和鸿蒙端的URI必须一致,包括scheme、host和path。
-
权限问题:确保应用具有处理AppLink的权限。在
config.json
中,reqPermissions
需要包含ohos.permission.INTERNET
和ohos.permission.GET_NETWORK_INFO
。 -
日志排查:通过
HiLog
或console
输出日志,检查AppLink的传递过程,确认是否成功触发回调。 -
系统版本兼容性:确认iOS和鸿蒙系统的版本是否支持AppLink功能。某些旧版本可能存在兼容性问题。
-
网络环境:确保设备网络环境正常,AppLink需要通过网络进行通信。
-
应用状态:检查应用是否处于前台或后台,不同状态下AppLink的处理方式可能不同。
通过以上步骤,可以逐步排查iOS的AppLink回调无反应的问题。
在HarmonyOS鸿蒙Next中,iOS的AppLink回调无反应可能由以下原因导致:
-
配置问题:检查
Info.plist
文件中的CFBundleURLTypes
配置是否正确,确保URL Scheme和AppLink的配置无误。 -
权限问题:确保应用已获取必要的权限,如网络权限和URL处理权限。
-
回调方法未实现:确认在AppDelegate中正确实现了
application:openURL:options:
或application:continueUserActivity:restorationHandler:
方法。 -
调试工具:使用Xcode的调试工具检查是否有错误日志或警告信息。
-
系统版本兼容性:确保应用兼容当前iOS系统版本,必要时进行适配。
通过逐一排查以上问题,可以有效解决AppLink回调无反应的情况。