Google Analytics iOS – зависание при открытии URL

По нажатию кнопки я отправляю пользователя на внешний URL-адрес (сафари). Я должен был отслеживать это действие, поэтому я включаю вызов Google Analytics прямо перед вызовом openUrl().

id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
[tracker send:[[GAIDictionaryBuilder createEventWithCategory:@"action" action:@"button_press" label:@"link" value:nil] build]];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}

Это успешно приводит меня к URL-адресу в сафари, но при возвращении в приложение оно просто зависает. Я попытался обернуть его в основной блок очереди dispatch_async, но безуспешно.

Если я удалю строку трекера Google Analytics, все будет работать нормально. Это ошибка в гугл аналитикс?


person Jameo    schedule 01.05.2015    source источник
comment
Когда вы удаляете строку трекера Google Analytics, вы также удаляете строку createEventWithCategory? Если вы этого не сделаете, ваш код, вероятно, не делает вызов canOpenUrl if и openURL.   -  person djabi    schedule 03.05.2015
comment
Я отлаживал и видел, как код завершается, поэтому я знаю, что все запущено.   -  person Jameo    schedule 04.05.2015
comment
Кто-нибудь может это решить?   -  person Rafael Nascimento    schedule 17.03.2017


Ответы (1)


Я нашел временное решение, хотя оно и не самое лучшее. В принципе, если я отправлю код отслеживания на секунду, зависания не произойдет. Я проверил в своей приборной панели, и звонок все еще отслеживается.

let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
    var tracker = GAI.sharedInstance().defaultTracker
    tracker.send(GAIDictionaryBuilder.createEventWithCategory(category, action: event, label: label, value: nil).build() as [NSObject : AnyObject])
}

Я надеюсь, что Google рассмотрит этот вызов, так как это не оптимальное решение.

person Jameo    schedule 04.05.2015