iOS - Как получить параметры в One-Link от AppsFlyer. Приложение было установлено и запущено
Я могу получить параметры (кампания, медиа-источник и т. Д.) 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 ответ
onAppOpenAttribution
срабатывает каждый раз, когда вы открываете приложение из разных глубоких ссылок (в вашем случае One-Link).
Я могу получить параметры (кампания, медиа-источник и т. Д.) One-Link, если мое приложение не устанавливается.
Правильно, первый раз, когда два обратных вызова сработали onAppOpenAttribution
а также onConversionDataReceived
,
Но если мое приложение было установлено, запущено, а затем я нажимаю на другую ссылку, чтобы открыть мое приложение
Это может произойти, если вы попытаетесь открыть приложение из One-Link, которое не принадлежит Appsflyer.
Например, эта ссылка (Universal Link) https://rndemotest.onelink.me/7y5s/f78c46d5
предоставит вам источник информации, кампанию и т. д. через onAppOpenAttribution
, где 7y5s
ваш идентификатор One-Link, определенный в разделе "ONELINK CONFIGURATION" на панели инструментов.
[РЕДАКТИРОВАТЬ]
Убедитесь, что вы используете последнюю версию AppsFlyer SDK,
Глубокие ссылки с короткими ссылками для iOS Universal 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
}