private void OpenUrlInternal(Uri uri)
{
if (uri == null) return;
var sUri = Uri.UnescapeDataString(uri.ToString());
var windowsPhone80Protocol = "/Protocol?";
if (sUri.StartsWith(windowsPhone80Protocol))
{
sUri = sUri.Substring(windowsPhone80Protocol.Length);
}
var queryStringIdx = sUri. IndexOf("?");
// check if '?' exists and it's not the last char
if (queryStringIdx == -1 || queryStringIdx + 1 == sUri.Length) return;
var queryString = sUri.Substring(queryStringIdx + 1);
// remove any possible fragments
var fragmentIdx = queryString.LastIndexOf("#");
if (fragmentIdx != -1)
{
queryString = queryString.Substring(0, fragmentIdx);
}
var queryPairs = queryString.Split('&');
var extraParameters = new Dictionary<string, string>(queryPairs.Length);
var attribution = new AdjustAttribution();
bool hasAdjustTags = false;
foreach (var pair in queryPairs)
{
if (ReadQueryString(pair, extraParameters, attribution))
{
hasAdjustTags = true;
}
}
if (!hasAdjustTags) { return; }
var clickPackage = GetDeeplinkClickPackage(extraParameters, attribution);
PackageHandler.AddPackage(clickPackage);
PackageHandler.SendFirstPackage();
}