Branch.io - ссылка открывает приложение, но не получает в нем данные

Ссылка Branch.io не получает данные, если приложение уже открыто и установлено. Когда приложение установлено, ссылка открывает приложение напрямую, но данные отсутствуют. Но если я перенаправляю в магазин приложений, затем снова щелкаю ссылку ветки и открываю приложение напрямую, тогда приходят данные. Пожалуйста, направьте, разместив код ниже.

Обновлять:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
    let branch: Branch = Branch.getInstance()
    branch.setDebug()
    branch.initSessionWithLaunchOptions(launchOptions, andRegisterDeepLinkHandler: {params, error in
        if error == nil {
            // params are the deep linked params associated with the link that the user clicked -> was re-directed to this app
            // params will be empty if no data found
            print("params: %@", params.description)
            print(params["event_id"])
            if let url = params["event_id"] as? NSInteger {
                let strEventID = String(url)
                print(strEventID)


    })
    self.window?.rootViewController = nav
    self.window?.makeKeyAndVisible()
    return true
}

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {

    Branch.getInstance().handleDeepLink(url)

    if(sourceApplication == "com.linkedin.LinkedIn")
    {
        if(LISDKCallbackHandler.shouldHandleUrl(url))
        {
            return LISDKCallbackHandler.application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
        }
    }

    return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}

func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
    // handler for Universal Links
    Branch.getInstance().continueUserActivity(userActivity)
    return true
}

// Called when a notification is received and the app is in the
// foreground (or if the app was in the background and the user clicks on the notification).
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)
{
    Branch.getInstance().handlePushNotification(userInfo)
    if(UserSingleton.sharedInstance.accessToken != kEmptyString)
    {
        if let aps = userInfo["aps"] as? NSDictionary {

            var title = kEmptyString
            var message = kEmptyString
            var inviteID = kEmptyString
            var statusType = kEmptyString

            if let inviteIDLocal = aps.valueForKey("id") as? NSNumber
            {
                inviteID = "\(inviteIDLocal)"
            }

            else if let inviteIDLocal = aps.valueForKey("id") as? String
            {
                inviteID = inviteIDLocal
            }
            else
            {
                inviteID = "0"
            }

            if let statusTypeLocal = aps.valueForKey("status_type") as? String
            {
                statusType = statusTypeLocal
            }

            if let titleLocal = aps.valueForKey("alert")?.valueForKey("title") as? String
            {
                title = titleLocal
            }

            if let messageLocal = aps.valueForKey("alert")?.valueForKey("body") as? String
            {
                message = messageLocal
            }
            CommonFunctions.addNotificationBar(title,message: message, inviteID: inviteID,statusType: statusType)
        }
    }
}

person iPhone 7    schedule 14.12.2016    source источник
comment
Похоже на проблему с вашей continueUserActivity реализацией. Не могли бы вы опубликовать весь метод didFinishLaunching из вашего файла AppDelegate?   -  person Alex Bauer    schedule 14.12.2016
comment
конечно @AlexBauer Пожалуйста, проверьте обновленный вопрос   -  person iPhone 7    schedule 14.12.2016


Ответы (1)


Проведя день, наконец-то выяснилась причина.

// Respond to Universal Links
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([**Any**]?) -> Void) -> Bool {
// pass the url to the handle deep link call
Branch.getInstance().continue(userActivity)

return true
}

Любой должен быть на самом деле AnyObject.

person iPhone 7    schedule 14.12.2016
comment
На самом деле это неверно. Документация Branch верна для Swift 3, что можно увидеть в официальном справочнике по API. запись для этого метода от Apple. Однако использование AnyObject в этом методе было правильным для Swift 2.3. Дополнительную информацию о различии синтаксиса можно найти здесь. Извините, у вас возникли проблемы! - person Alex Bauer; 14.12.2016
comment
@AlexBauer Нигде в этом документе не упоминается, что этот код для swift 3, потому что люди вроде меня, которые работают над swift 2, а не запускают swift 3, столкнутся с проблемами. И здесь у меня тоже нет никаких ошибок, значит, это неправильно, в документации такие вещи нужно указывать. Остальное тебе виднее, спасибо за разъяснения. - person iPhone 7; 14.12.2016
comment
@AlexBauer Не могли бы вы помочь мне, ссылка не открывает приложение и не получает данные, но когда приложение закрывается и запускается по ссылке, оно не передает никаких данных, а при обычном перезапуске приложения (не по ссылке) данные передаются автоматически. - person iPhone 7; 14.12.2016
comment
Не могли бы вы показать все функции Branch в вашем файле AppDelegate? Это будет очень полезно! - person Alex Bauer; 14.12.2016
comment
Похоже, у вас есть дополнительные SDK (LinkedIn, Facebook и т. Д.). Иногда это может вызвать конфликты. Попробуйте временно удалить их и посмотрите это примечание конкретно о Facebook SDK и универсальных ссылках - person Alex Bauer; 15.12.2016