2014-02-20 90 views
1

截至二月初,Apple已经开始拒绝来自AppStore的移动应用程序,如果他们访问广告标识符(IDFA)但不在运行时投放广告。Facebook SDK for Unity参考ASIdentifierManager

苹果正在从他们的开发者指南执行条款3.3.12:

“你和你的应用程序(和任何第三方与你染上服务广告)可以使用广告识别码,和任何通过使用广告标识符获得的信息,仅用于提供广告服务。如果用户重置广告识别码,然后您同意不合并,关联,链接或其他关联人,直接或间接地,现有广告识别码,并与重置广告识别码。”

任何来源的信息,问题ASIndentifierManager引用自FacebookSDK.a(Facebook SDK for Unity并且由于我们的应用没有展示任何广告,我们可能会被拒绝。我们只是使用Facebook登录,没有别的。

任何人都有想法如何删除FB统一库中的ASIndentifierManager引用?

到目前为止,我还没有找到有关此问题的Facebook SDK for Unity的解决方案。我看到这已经在Facebook开发者页面中提出,但仅适用于iOS SDK而不适用于Unity SDK。如果我错过了任何链接,请随时将其指向我。谢谢。

回答

0

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

p.s.对不起英语

+0

尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Sasa

0

广告标识符在统一项目中默认由xcode引用,即所有从统一体制作的xcode项目都会引用广告标识符。

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

1)找到DeviceSettings。毫米文件在您的Xcode项目(你会发现它在类/团结/)

2)做如下修改有:

跟随功能)删除: 代码(CSHARP):

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

b)除去以下的变量的声明: 码(CSHARP):

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

c)修改以下FUNC的实现行动(下面提供的替换): 代码(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放置“否”。

+0

虽然这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Sasa