面向Unity的Facebook SDK引用了ASIdentifierManager

时间:2014-02-20 08:52:07

标签: facebook-unity-sdk

  

截至2月初,Apple已开始拒绝AppStore中的移动应用程序,如果他们访问广告标识符(IDFA)但在运行时不提供广告。

     

Apple正在执行其开发者指南中的第3.3.12条:

     

“您和您的应用程序(以及您与之签约投放广告的任何第三方)可以使用广告标识符以及通过使用广告标识符获得的任何信息,仅用于提供广告服务。如果用户重置广告标识符,则表示您同意不会直接或间接地将之前的广告标识符和任何派生信息与重置的广告标识符相关联,关联,链接或以其他方式关联。“

问题 ASIndentifierManager是从FacebookSDK.a( Facebook SDK for Unity 引用的,由于我们的应用没有展示任何广告,我们可能会被拒绝。我们只使用Facebook登录而不是其他任何内容。

任何人都知道如何删除FB Unity库中的ASIndentifierManager引用?

到目前为止,我还没有找到针对此问题的 Facebook SDK for Unity 的解决方案。我看到这已经在Facebook Developers Page中提出,但仅适用于iOS SDK,而不适用于Unity SDK。如果我错过任何链接,请随时指向我。感谢。

2 个答案:

答案 0 :(得分:0)

我遇到了这样的问题。我唯一可以建议你的是下载source code的FacebookSDK并按照post中的描述进行编辑。 编译后,您将获得分辨率为“.a”的文件。 然后,您需要将文件FacebookSDK.a(Assets / Facebook / Editor / iOS)替换为您在编译结果中收到的文件。

P.S。对不起英语

答案 1 :(得分:0)

广告标识符默认由统一项目中的xcode引用,即所有由unity组成的xcode项目都会引用广告标识符。

如果您的应用没有展示广告,则需要修改xcode的DeviceSettings.mm脚本中的一些代码。

1)在Xcode项目中找到DeviceSettings.mm文件(你应该在Classes / Unity /下找到它)

2)在那里进行以下修改:

a)删除以下功能: 代码(csharp):

static id QueryASIdentifierManager()
{
<..>
}
static void QueryAdID()
{
<..>
}
static void QueryAdTracking()
{
<..>
}

b)删除以下变量声明: 代码(csharp):

static NSString*    _ADID               = nil;
static bool         _AdTrackingEnabled  = false;

c)修改以下功能的实现(替换为下面提供的): 代码(csharp):

extern "C" const char*  UnityAdvertisingIdentifier()
{
return NULL;
}

extern "C" bool         UnityAdvertisingTrackingEnabled()
{
return false;
}

static void QueryDeviceID()
{
    if(_DeviceID == nil)
    {
    #if UNITY_PRE_IOS7_TARGET
        if(!_ios70orNewer)
            _InitDeviceIDPreIOS7();
    #endif

        // first check vendor id
        if(_DeviceID == nil)
        {
            QueryVendorID();
            _DeviceID = _VendorID;
        }
    }
}

您可以参考以下链接:

http://forum.unity3d.com/threads/ios-advertising-identifier-rejection-faq.226187/

此外,在修改代码后,当您在提交应用程序时回答有关itunes的问题时,请将“否”用于idfa。