onAppOpenAttribution не вызывается для глубоких ссылок с AppsFlyer

Я интегрировал AppsFlyer SDK в свой проект. Мне удалось заставить работать глубокие ссылки. Любые ссылки, которые я делаю в OneLink, будут открывать приложение по желанию. Однако у меня нет доступа к параметрам ссылки. Я реализовал все следующие методы делегата следующим образом:

func onAppOpenAttribution(_ attributionData: [AnyHashable : Any]!) {
    print("Test 1")
}

func onAppOpenAttributionFailure(_ error: Error!) {
    print("Test 2")
}

func onConversionDataReceived(_ installData: [AnyHashable : Any]!) {
    print("Test 3")
}

func onConversionDataRequestFailure(_ error: Error!) {
    print("Test 4")
}

Ни один из них не вызывается, когда мое приложение открыто из глубокой ссылки. Что мне здесь не хватает? В моем URL-адресе, настроенном на панели управления, я настроил mycompany:// как Mobile deeplink URL. Любые указатели на это были бы замечательными. Спасибо!


person Kex    schedule 07.08.2017    source источник
comment
какую версию iOS SDK вы используете? Вы зарегистрировались на delegate? Если вы открываете приложение не через deep-link, вызывается onConversionDataReceived? Также опубликуйте инициализацию AppsFlyer   -  person Maxim Shoustin    schedule 08.08.2017
comment
@MaximShoustin onConversionDataReceived знаете, почему мне не звонят, даже если у меня есть наборы delegate = self   -  person Pranavan SP    schedule 04.11.2019


Ответы (3)


Если вы еще этого не сделали, добавьте к своему делегату следующий метод:

// Reports app open from a Universal Link for iOS 9
- (BOOL) application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *_Nullable))restorationHandler {    
    [[AppsFlyerTracker sharedTracker] continueUserActivity:userActivity restorationHandler:restorationHandler];
    return YES;
}

При этом данные ссылки будут переданы в AppsFlyer Tracker, и в результате должен быть вызван onAppOpenAttribution.

person BenjaminAF    schedule 08.08.2017
comment
Я добавил это, но его не вызывают, есть идеи? - person Mohit; 26.10.2017
comment
Вы устанавливаете [AppsFlyerTracker sharedTracker].delegate = self ? - person pablobart; 15.12.2017
comment
Почему я получаю эту ошибку Невозможно присвоить значение типа AppDelegate типу AppsFlyerTrackerDelegate! @poblobart - person Chetan Rajagiri; 19.01.2018

Я просто должен был:

  1. Перезапустите мой Xcode

  2. Повторно загрузить профили обеспечения

3) Убедитесь, что вы находитесь на реальном устройстве с фоновым проектом Xcode, когда вы нажимаете на ссылку.

  1. Убедитесь, что AppsFlyerTracker.shared().delegate = self находится в методе didFinishLaunchingWithOptions в файле AppDelegate.
person B-Tron of the Autobots    schedule 20.12.2017
comment
Когда я добавляю 4-ю точку, я получаю эту ошибку Невозможно присвоить значение типа "AppDelegate" для типа "AppsFlyerTrackerDelegate!" - person Chetan Rajagiri; 19.01.2018
comment
Привет, Четан, добавьте AppsFlyerTrackerDelegate в класс следующим образом: class AppDelegate: UIResponder, UIApplicationDelegate, AppsFlyerTrackerDelegate { - person B-Tron of the Autobots; 20.01.2018

Согласно документу AppsFlyer: инициализируя SDK, необходимо проверить следующие условия:

  • Вызывать AppsFlyerTracker.shared.trackAppLaunch() при публикации UIApplication.didBecomeActiveNotification или в функции applicationDidBecomeActive(_:).
  • Установить AppsFlyerTracker.shared.isStopTracking = false
  • Передайте userActivity в AppsFlyerManager.shared.continue(_) в application(_:continue:restorationHandler:) для универсальной ссылки (http:// или https://).
  • Передайте URL-адрес и параметры в AppsFlyerManager.shared.handleOpen(_:options:) в application(_:open:options:) для прямой ссылки (пользовательская схема).
  • Установите делегата трекера на AppsFlyerTracker.shared.delegate.

После вызова AppsFlyerTracker.shared.trackAppLaunch() функция обратного вызова onAppOpenAttribution(_ attributionData:) делегата также передаст информацию о ссылке.

person Mars    schedule 02.06.2020