【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会造成影响的。

相关参考链接:

https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-applinking-receivelinks-ios-0000001054025701


更多关于【AGC】HarmonyOS鸿蒙Next中iOS的applink的回调没反应问题分析的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

学习

更多关于【AGC】HarmonyOS鸿蒙Next中iOS的applink的回调没反应问题分析的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


学习了

学习了

在HarmonyOS鸿蒙Next中,iOS的AppLink回调无反应可能涉及以下几个方面:

  1. AppLink配置:确保在iOS端和鸿蒙端都正确配置了AppLink。iOS端需要在Info.plist中设置CFBundleURLTypes,鸿蒙端需要在config.json中配置abilitiesuritype

  2. 回调函数实现:检查鸿蒙端是否实现了正确的回调函数。在Ability中,onStartonNewIntent方法需要处理AppLink的URI。

  3. URI匹配:确认AppLink的URI格式与配置的URI模式匹配。iOS端和鸿蒙端的URI必须一致,包括scheme、host和path。

  4. 权限问题:确保应用具有处理AppLink的权限。在config.json中,reqPermissions需要包含ohos.permission.INTERNETohos.permission.GET_NETWORK_INFO

  5. 日志排查:通过HiLogconsole输出日志,检查AppLink的传递过程,确认是否成功触发回调。

  6. 系统版本兼容性:确认iOS和鸿蒙系统的版本是否支持AppLink功能。某些旧版本可能存在兼容性问题。

  7. 网络环境:确保设备网络环境正常,AppLink需要通过网络进行通信。

  8. 应用状态:检查应用是否处于前台或后台,不同状态下AppLink的处理方式可能不同。

通过以上步骤,可以逐步排查iOS的AppLink回调无反应的问题。

在HarmonyOS鸿蒙Next中,iOS的AppLink回调无反应可能由以下原因导致:

  1. 配置问题:检查Info.plist文件中的CFBundleURLTypes配置是否正确,确保URL Scheme和AppLink的配置无误。

  2. 权限问题:确保应用已获取必要的权限,如网络权限和URL处理权限。

  3. 回调方法未实现:确认在AppDelegate中正确实现了application:openURL:options:application:continueUserActivity:restorationHandler:方法。

  4. 调试工具:使用Xcode的调试工具检查是否有错误日志或警告信息。

  5. 系统版本兼容性:确保应用兼容当前iOS系统版本,必要时进行适配。

通过逐一排查以上问题,可以有效解决AppLink回调无反应的情况。

回到顶部