Мы пытаемся реализовать Branch.io, чтобы мы могли предоставлять глубокие ссылки, чтобы пользователи могли: 1.) открывать магазин приложений или 2.) открывать установленное приложение и запускать logi c на основе параметров ссылки. .
Мы тестируем Android.
Мы интегрировали пакет Branch.io Unity в наш проект, а также в нашу панель управления Branch.io и установку быстрых ссылок. Мы можем генерировать ссылки, мы можем открывать их в app-store, в случае открытия на устройстве с уже установленным приложением мы открываем приложение, но приложение сразу открывается с предупреждением «остановлено» и закрывается.
Руководств и учебных пособий по этой теме не так много. У кого-нибудь есть опыт или, возможно, он может диагностировать, где мы ошиблись?
Спасибо!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using UnityEngine.SceneManagement;
public class Spin : MonoBehaviour
{
BranchUniversalObject universalObject = new BranchUniversalObject();
BranchLinkProperties linkProperties = new BranchLinkProperties();
// Use this for initialization
void Start()
{
Branch.setTrackingDisabled(false);
Branch.initSession(CallbackWithBranchUniversalObject);
}
public void CallbackWithParams(Dictionary<string, object> parameters, string error)
{
if (error != null)
{
Debug.Log("Branch Error: " + error);
}
else
{
Debug.Log("Branch initialization completed: ");
foreach (string str in parameters.Keys)
{
Debug.Log(str + " : " + parameters[str].ToString());
}
}
}
//Read Deep Link
public void CallbackWithBranchUniversalObject(BranchUniversalObject universalObject, BranchLinkProperties linkProperties, string error)
{
if (error != null)
{
Debug.LogError("Branch Error: " + error);
}
else
{
Debug.Log("Branch initialization completed: ");
Debug.Log("Universal Object: " + universalObject.ToJsonString());
Debug.Log("Link Properties: " + linkProperties.ToJsonString());
}
public void CreateBranchLink()
{
universalObject = new BranchUniversalObject();
universalObject.canonicalIdentifier = "bbbbbbb";
universalObject.canonicalUrl = "https://branch.io";
universalObject.title = "This is my title";
universalObject.contentDescription = "it's something you do.";
universalObject.contentIndexMode = 1;
universalObject.localIndexMode = 0;
universalObject.expirationDate = new DateTime(2020, 12, 30);
universalObject.keywords.Add("keyword01");
universalObject.keywords.Add("keyword02");
universalObject.metadata.AddCustomMetadata("foo", "bar");
Branch.registerView(universalObject);
linkProperties = new BranchLinkProperties();
linkProperties.tags.Add("tag1");
linkProperties.tags.Add("On Start");
linkProperties.feature = "View Content";
linkProperties.channel = "User to User";
linkProperties.controlParams.Add("$deeplink_path", "pre.app.link/zzzzzzzzzzz");
Branch.getShortURL(universalObject, linkProperties, (url, error) =>
{
if (error != null)
{
Debug.LogError("Branch.getShortURL failed: " + error);
}
else
{
Debug.Log("Branch.getShortURL url: " + url);
//universalObject.canonicalIdentifier = url;
}
});
}
public void ShareBranchLink()
{
if (universalObject == null)
{
universalObject = new BranchUniversalObject();
universalObject.canonicalIdentifier = "bbbbbb";
universalObject.canonicalUrl = "https://branch.io";
universalObject.title = "BBBbbb";
universalObject.contentDescription = "My awesome piece of content!";
universalObject.contentIndexMode = 1;
universalObject.localIndexMode = 0;
universalObject.keywords.Add("keyword01");
universalObject.keywords.Add("keyword02");
universalObject.metadata.AddCustomMetadata("test1", "test2");
Branch.registerView(universalObject);
if (linkProperties == null)
{
linkProperties = new BranchLinkProperties();
linkProperties.tags.Add("tag1");
linkProperties.tags.Add("tag2");
linkProperties.feature = "invite";
linkProperties.channel = "Twitter";
linkProperties.stage = "2";
linkProperties.controlParams.Add("$deeplink_path", "bbbbbbb.app.link/zzzzzzzzz");
}
Branch.shareLink(universalObject, linkProperties, "hello there with short url", (parameters, error) => {
if (error != null)
{
Debug.LogError("Branch.shareLink failed: " + error);
}
else
{
Debug.Log("Branch.shareLink success: ");
if (parameters != null)
{
//share link here
foreach (string key in parameters.Keys)
{
Debug.Log(key + "=" + parameters[key].ToString());
}
}
}
});
}
}
public void CheckViewFirstReferringParams()
{
Branch.getFirstReferringBranchUniversalObject().ToJsonString();
Branch.getFirstReferringBranchLinkProperties().ToJsonString();
}
private IEnumerator ICheckForFristTimeExperience()
{
yield return new WaitForSeconds(.1f);
CheckViewFirstReferringParams();
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class StartDeepLink : MonoBehaviour
{
void Start()
{
Branch.initSession(delegate (Dictionary<string, object> parameters, string error) {
// load your normal Scene
SceneManager.LoadSceneAsync("Main", LoadSceneMode.Single);
});
}
public void SetUserID()
{
Branch.setIdentity("my user id");
}
public void BranchLogOut()
{
Branch.logout();
}
}