Unity-Branch.io Deep-Link: <Application>остановлен - PullRequest
0 голосов
/ 20 июня 2020

Мы пытаемся реализовать 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();
    }

}
...