Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift Firebase动态链接可以';当Localytics实现时,找不到连续性活动_Swift_Swizzling_Firebase Dynamic Links_Localytics - Fatal编程技术网

Swift Firebase动态链接可以';当Localytics实现时,找不到连续性活动

Swift Firebase动态链接可以';当Localytics实现时,找不到连续性活动,swift,swizzling,firebase-dynamic-links,localytics,Swift,Swizzling,Firebase Dynamic Links,Localytics,在iOS上实现Firebase动态链接时,当您单击“打开动态链接”时,调试控制台中会显示一条错误消息: FIRAnalytics/未找到应用程序的警告实现:continueUserActivity:restorationHandler:未找到。请将处理程序添加到您的应用程序代理中。类:LLAppDelegateProxy 我创建了一个最小化的项目来重现这个问题。新项目只包含 Pod 'Localytics' Pod 'Firebase/DynamicLinks’ 并且是唯一将代码添加到AppD

在iOS上实现Firebase动态链接时,当您单击“打开动态链接”时,调试控制台中会显示一条错误消息:

FIRAnalytics/未找到应用程序的警告实现:continueUserActivity:restorationHandler:未找到。请将处理程序添加到您的应用程序代理中。类:LLAppDelegateProxy

我创建了一个最小化的项目来重现这个问题。新项目只包含

Pod 'Localytics'
Pod 'Firebase/DynamicLinks’
并且是唯一将代码添加到
AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    FIRApp.configure()
    Localytics.autoIntegrate("apikey", launchOptions: launchOptions)

    return true
}

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    let dynamicLink = FIRDynamicLinks.dynamicLinks()?.dynamicLink(fromCustomSchemeURL: url)
    if let dynamicLink = dynamicLink {
        print(dynamicLink.url)
        return true
    }

    return false
}

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    guard let dynamicLinks = FIRDynamicLinks.dynamicLinks() else {
        return false
    }
    let handled = dynamicLinks.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
        print(dynamiclink?.url)
    }

    return handled
}
Firebase似乎试图在Localytics的
LLAppDelegateProxy
中调用
application:continueUserActivity:restorationHandler:
,而不是
AppDelegate.swift
。Branch.io上还有一篇GitHub问题帖子:

文章指出Google Analytics和Localytics之间存在冲突,导致分支无法在正确的位置找到函数
application:continueUserActivity:restorationHandler:

我遵循他们的第三个建议来更改swizzling的方法:

//Their solution in Objc

SwizzleInstanceSelectorWithNewSelector(
    [[UIApplication sharedApplication].delegate class], 
    @selector(application:continueUserActivity:restorationHandler:),
    [self class], 
    @selector(BRapplication:continueUserActivity:restorationHandler:)
);

//My swift version in AppDelegate.swift

let originalSelector = #selector(AppDelegate.application(_:continueUserActivity:restorationHandler:))
let swizzledSelector = #selector(AppDelegate.firApplication(_:continueUserActivity:restorationHandler:))

let originalMethod = class_getClassMethod(AppDelegate.self, originalSelector)
let swizzledMethod = class_getClassMethod(AppDelegate.self, swizzledSelector)

method_exchangeImplementations(originalMethod, swizzledMethod)
然而,这对我不起作用。我仍然看到警告和链接仍然没有处理


你能帮我修复这个方法吗?或者你有更好的解决方案:

很抱歉,关于这个问题的答案太晚了


我们联系了Localytics和Firebase。Localytics为我们提供了一个解决方案,需要从自动集成切换到手动集成。虽然使用手动集成有点烦人,但它解决了这个问题:

很抱歉,关于这个问题的答案太晚了


我们联系了Localytics和Firebase。Localytics为我们提供了一个解决方案,需要从自动集成切换到手动集成。虽然使用手动集成有点烦人,但它解决了问题:

在花了几乎一整天的时间后,我已经解决了问题

下面的解决方案很有魅力

通过在应用程序的
info.plist
中添加
FirebaseAppDelegateProxyEnabled
设置为
,可以防止Firebase在AppDelegate中滑动方法


干杯

在花了几乎一整天的时间后,我已经解决了这个问题

下面的解决方案很有魅力

通过在应用程序的
info.plist
中添加
FirebaseAppDelegateProxyEnabled
设置为
,可以防止Firebase在AppDelegate中滑动方法

干杯