iOS - Как получить параметры в One-Link от AppsFlyer.Приложение было установлено и запущено - PullRequest
0 голосов
/ 16 февраля 2019

Я могу получить параметры (кампания, медиа-источник и т. Д.) One-Link, если мое приложение не устанавливается.Я использую метод ниже, чтобы сделать это.

func onConversionDataReceived(_ installData: [AnyHashable : Any]!) {

    if let data = installData{

        print("\(data)")

        if let status = data["af_status"] as? String{

            if(status == "Non-organic"){

                if let sourceID = data["media_source"] , let campaign = data["campaign"]{

                    print("This is a Non-Organic install. Media source: \(sourceID)  Campaign: \(campaign)")

                }

            } else {

                print("This is an organic install.")

            }

        }

    }

}

Но если мое приложение было установлено, запущено, а затем я нажимаю другую ссылку One-Link, чтобы открыть свое приложение, я просто получаю только этот URL-адрес одним из следующих способов:

func onAppOpenAttribution(_ attributionData: [AnyHashable : Any]!) {

    if let data = attributionData{

        print("\(data)")

    }

}

Так есть ли способ получить параметры (кампания, медиа-источник и т. Д.), Если мое приложение доступно на устройстве?

Примечание: я использовал короткую ссылку.

1 Ответ

0 голосов
/ 16 февраля 2019

onAppOpenAttribution срабатывает каждый раз, когда вы открываете приложение из разных глубоких ссылок (в вашем случае One-Link).

Я могу получить параметры (кампания, медиа-источник и т. Д.)...) One-Link, если мое приложение не устанавливается.

Справа, в первый раз срабатывают два обратных вызова onAppOpenAttribution и onConversionDataReceived.

Но если мое приложение было установлено, запущено, а затем я нажимаю на другую One-Link, чтобы открыть мое приложение

Это может произойти, если вы попытаетесь открыть приложение из One-Link, которое не принадлежит Appsflyer.

Например, эта ссылка (Universal Link) https://rndemotest.onelink.me/7y5s/f78c46d5 предоставит вам источник мультимедиа, кампанию и т. Д. Через onAppOpenAttribution, где 7y5s - это ваш идентификатор одной ссылки, определенный в разделе «ONELINK CONFIGURATION»панели инструментов.

[EDIT]

Убедитесь, что вы используете последнюю версию AppsFlyer SDK,

Глубокие ссылки с короткими ссылками для iOSUniversal Links или Android App Links поддерживаются только в SDK версии 4.8.0

Как правило, вы должны получитьответ как {"link": "<URL>"} для Полная ссылка ae {"link":"https://abc.onelink.me/2347196006?pid=User%20invite&c=CMTT2019einvite&af_dp=abc%3A%2F%2F"}

Для One-Link вы должны получить всю информацию, содержащую медиа-источник, ....


Кстати, вот пример кода, как обрабатывать onAppOpenAttribution ответ:

func onAppOpenAttribution(_ attributionData: [AnyHashable : Any]!) {

        var attDataString:String = ""
        var params = [String: String]()

        print("")
        print("<-------------------------------------------------->")
        print("onAppOpenAttribution is:")

        if let pid = attributionData[AnyHashable("pid")] as? String{
            attDataString.append("PID: " + pid + "\n\n")
            print(helper(module: "pid", message: pid))
        }

        if let is_retargeting = attributionData[AnyHashable("is_retargeting")] as? String{
            attDataString.append("is_retargeting: " + is_retargeting + "\n\n")
            print(helper(module: "is_retargeting", message: is_retargeting))
        }

        if let campaign = attributionData[AnyHashable("c")] as? String{
            attDataString.append("Campaign: " + campaign + "\n\n")
            print(helper(module: "campaign", message: campaign))
        }

        if let link = attributionData[AnyHashable("link")] as? String{
            attDataString.append("Link: " + link + "\n\n")
            print(helper(module: "link", message: link))
        }

        if let af_dp = attributionData[AnyHashable("af_dp")] as? String{
            attDataString.append("af_dp: " + af_dp + "\n\n")
            print(helper(module: "af_dp", message: af_dp))
        }
        print(attributionData)
        print("<-------------------------------------------------->")
        print("")

        //        dump(attributionData)
    }

func helper(module:String!, message:String!) -> String!{

        var sb:String = ""
        sb.append(" " + module + "=")
        var pad:Int = 17 - module.characters.count

        while  pad > 0 {
            pad-=1
            sb.append( " " )
        }
        sb.append(" " + message)

        return sb
    }
...