火力地堡动态链接找不到continueUserActivity当平台Localytics实施

问题描述:

尽管实现iOS上的火力地堡动态链接,有在调试控制台当你点击打开动态链接的错误消息:火力地堡动态链接找不到continueUserActivity当平台Localytics实施

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

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

Pod 'Localytics' 
Pod 'Firebase/DynamicLinks’ 

而像火力地堡试图调用application:continueUserActivity:restorationHandler:在平台Localytics' LLAppDelegateProxy而不是AppDelegate.swift唯一的代码添加到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 
} 

它看起来。还有一个从Branch.io一个GitHub的问题后:https://github.com/BranchMetrics/ios-branch-deep-linking/issues/485

的后指出,有谷歌分析和平台Localytics之间的冲突,导致科没有能够找到功能application:continueUserActivity:restorationHandler:在正确的地方。

我按照他们的第三个建议,改变方法混写:

//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和火力地堡。平台Localytics提供我们需要从自动集成切换到手动集成的解决方案。虽然这是一个有点恼人使用手动积分,但它解决了这个问题:]