как настроить приложение для получения параметров utm с URL iOS? - PullRequest
0 голосов
/ 06 октября 2018

Мне потребовалась помощь для получения параметров utm из URL-адреса, в котором установлено приложение, но параметры utm не получены в URL-адресе.Не могли бы вы, ребята, помочь, как настроить приложение для получения параметров UTM из приложения.

Вот код, который я делаю, чтобы установить трекер и параметры

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]?) -> Bool
{
    if let gai = GAI.sharedInstance(){
        gai.tracker(withTrackingId: AppConfiguration.GOOGLE_ANALYTICS_ID)
        gai.defaultTracker.allowIDFACollection = true
    }
}

Этот методвызывается, когда приложение установлено с URL: -

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {

    let urlString = url.absoluteString

    let tracker = GAI.sharedInstance().defaultTracker

    // setCampaignParametersFromUrl: parses Google Analytics campaign ("UTM")
    // parameters from a string url into a Map that can be set on a Tracker.
    let hitParams = GAIDictionaryBuilder()

    // Set campaign data on the map, not the tracker directly because it only
    // needs to be sent once.
    hitParams.setCampaignParametersFromUrl(urlString)

    // Campaign source is the only required campaign field. If previous call
    // did not set a campaign source, use the hostname as a referrer instead.
    if !(hitParams.get(kGAICampaignSource) != nil) && (url.host?.count ?? 0) != 0 {
        // Set campaign data on the map, not the tracker.
        hitParams.set("referrer", forKey: kGAICampaignMedium)
        hitParams.set(url.host, forKey: kGAICampaignSource)
    }
    //var hitParamsDict = hitParams.build()

    // A screen name is required for a screen view.
    tracker?.set(kGAIScreenName, value: "Sign up")
    var params = [AnyHashable : Any]()
    params[kGAICampaignMedium] = hitParams.get(kGAICampaignMedium)
    params[kGAICampaignSource] = hitParams.get(kGAICampaignSource)
    params[kGAICampaignContent] = hitParams.get(kGAICampaignContent)
    params[kGAICampaignName] = hitParams.get(kGAICampaignName)
    params[kGAICampaignKeyword] = hitParams.get(kGAICampaignKeyword)

    tracker?.send(params)

}

, но параметры utm не принимаются приложением.Ребята, можете ли вы помочь в этом ... Заранее спасибо

1 Ответ

0 голосов
/ 08 октября 2018

Посмотрите на код ниже.По сути, вы создаете params hastable, записываете пять (или меньше) параметров и вызываете tracker.send с ним.Вы отправляете метаданные, но не отправляете фактическое попадание (просмотр экрана, событие или ...).

// A screen name is required for a screen view.
tracker?.set(kGAIScreenName, value: "Sign up")
var params = [AnyHashable : Any]()
params[kGAICampaignMedium] = hitParams.get(kGAICampaignMedium)
params[kGAICampaignSource] = hitParams.get(kGAICampaignSource)
params[kGAICampaignContent] = hitParams.get(kGAICampaignContent)
params[kGAICampaignName] = hitParams.get(kGAICampaignName)
params[kGAICampaignKeyword] = hitParams.get(kGAICampaignKeyword)

tracker?.send(params)

Документация здесь рекомендует следующее.Обратите внимание на вызов [GAIDictionaryBuilder createScreenView] .Я считаю, что это причина, по которой данные кампании не доставляются

[tracker send:[[[GAIDictionaryBuilder createScreenView] setAll:campaignData] build]];
...