是否可以使用facebook unity sdk跟踪应用安装,而无需将用户登录到facebook?

时间:2018-11-01 19:42:09

标签: facebook unity3d

我已经阅读了相关问题,但它们似乎并未涵盖这个确切的问题。基本上,我试图设置一个Facebook营销活动,目标是跟踪应用安装。 Facebook建议使用他们的SDK获取有关应用安装的准确信息,但是我不想提示用户在我的应用中登录Facebook。是否可以在没有用户登录的情况下安装facebook sdk track app?根据facebook的说法,他们的api会自动跟踪应用安装,但是在其名为mainmenu.cs的初始化脚本中,似乎要求有Facebook登录名。

1 个答案:

答案 0 :(得分:0)

好吧,我要做的基本上是在我的第一个场景中创建一个持久性游戏对象,并将此代码附加到该对象上。我基于Facebook示例https://developers.facebook.com/docs/app-events/unity编写了此代码,但添加了一些其他检查,因此不会两次调用FB.Init()。我还添加了一个协程,它将等待激活事件直到FB.Init()完成,因为FB.Init()是一个异步函数。希望它能对任何人有帮助。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Facebook.Unity;

public class FacebookTracker : MonoBehaviour {
    private static FacebookTracker instance;
    private bool initCalled;

    private void Awake()
    {
        if (instance == null)
        {
            instance = this;
            DontDestroyOnLoad(gameObject);
        } else
        {
            Destroy(gameObject);
        }

        if (FB.IsInitialized == false && initCalled == false)
        {
            FB.Init();
            initCalled = true;
        }
    }

    private void OnApplicationPause(bool pause)
    {
        Debug.Log("OnApplicationPause = " + pause);
        if (pause == false)
        {
            if (FB.IsInitialized == true)
            {
                FB.ActivateApp();
            } else
            {
                if (initCalled == false)
                {
                    FB.Init();
                    initCalled = true;
                }
                StartCoroutine(ActivateEvent());
            }
        }
    }

    private IEnumerator ActivateEvent()
    {
        yield return new WaitUntil(() => FB.IsInitialized == true);
        Debug.Log("Facebook Activate Event Logged");
        FB.ActivateApp();
    }
}