应用程序因Facebook SDK和Flurry SDK中的advertisingIdentifier而被拒绝

时间:2014-02-05 10:30:47

标签: ios iphone objective-c facebook

由于Facebook sdk和Flurry SDK中的advertisingIdentifier,我的应用被拒绝了!我在最新的advertisingIdentifier和Flurry SDK中发现了Facebook SDK (3.12)。也许您可以使用以下方法检查您的图书馆是否出现:

我在终端中打开了FacebookSDK.framework作为库,并输入以下命令

otool -v -s __TEXT __objc_methname FacebookSDK | grep advertisingIdentifier

和Flurry SDK一样。

但我不知道该怎么做。?

有消息:Flurry最近更新了他们的SDK,其中不包含“advertisingIdentifier”,但Facebook还没有。

3 个答案:

答案 0 :(得分:17)

<强>更新

由于我在下面回答,我已将该应用程序提交到商店,但通过下面建议的编辑,Facebook只能跟踪事件而无需进行安装归因跟踪。 因此,下面解决方案的问题在于它有效地禁止Facebook将安装链接到Facebook上的广告活动。

对此的修复应使用最新的3.13 Facebook SDK并简单地删除

-weak_framework AdSupport 

来自您的项目,如下所示。

现在应用程序正确编译而不编辑FBUtil.m并且它没有链接AdSupport框架已从Pods.xconfig和Pods-Facebook-iOS-SDK.xconfig中删除

我在下面留下了回复,以便您可以看到我之前尝试从SDK的3.12版本中删除AdSupport,但如果您想要安装广告归因跟踪,请不要使用它。 (事实上​​,只有在您计划进行CPC广告时才能使用它,否则Facebook将无法优化安装广告系列。)

OLD REPLY:

在我看来,这似乎还不够。 当然,我想完全删除AdSupport Framework。 在Facebook SDK 3.12中,AdSupport Framework似乎总是导入/链接,即使它没有包含在您的项目或pod文件中(实际上我使用cocoapods来安装Facebook SDK)。

AdSupport框架确实没有在我的项目中链接,但在我的应用程序可执行文件上执行“otool -L”表明框架仍在链接。

为了避免当前的FB SDK执行此操作,您需要编辑以下内容:

在FBUtility.m

评论此:

//#import <AdSupport/AdSupport.h>

编辑以下方法:

+ (NSString *)advertiserID {
    /*
    NSString *advertiserID = nil;
    Class ASIdentifierManagerClass = [FBDynamicFrameworkLoader loadClass:@"ASIdentifierManager" withFramework:@"AdSupport"];
    if ([ASIdentifierManagerClass class]) {
        ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager];
        advertiserID = [[manager advertisingIdentifier] UUIDString];
    }
    return advertiserID;
    */
    return @"";
}

+ (FBAdvertisingTrackingStatus)advertisingTrackingStatus {

    /*
    if ([FBSettings restrictedTreatment] == FBRestrictedTreatmentYES) {
        return AdvertisingTrackingDisallowed;
    }
    FBAdvertisingTrackingStatus status = AdvertisingTrackingUnspecified;
    Class ASIdentifierManagerClass = [FBDynamicFrameworkLoader loadClass:@"ASIdentifierManager" withFramework:@"AdSupport"];
    if ([ASIdentifierManagerClass class]) {
        ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager];
        if (manager) {
            status = [manager isAdvertisingTrackingEnabled] ? AdvertisingTrackingAllowed : AdvertisingTrackingDisallowed;
        }
    }
    */
    return AdvertisingTrackingDisallowed;
}

最后,如果您在项目工作区中使用cocoapods搜索所有

  

-weak_framework AdSupport

删除所有这些(你会在Pods.xconfig和Pods-Facebook-iOS-SDK.xcconfig中找到它们)

这对我有用,现在我的app可执行文件免于AdSupport。

答案 1 :(得分:12)

https://github.com/facebook/facebook-ios-sdk获取源代码,而不是编译的框架。只需删除框架并粘贴源代码即可。

转到FBUtility.m并修改此方法:

+ (NSString *)advertiserID {
    NSString *advertiserID = nil;
    Class ASIdentifierManagerClass = [FBDynamicFrameworkLoader loadClass:@"ASIdentifierManager" withFramework:@"AdSupport"];
    if ([ASIdentifierManagerClass class]) {
        ASIdentifierManager *manager = [ASIdentifierManagerClass sharedManager];
        advertiserID = [[manager advertisingIdentifier] UUIDString];
    }
    return advertiserID;
}

+ (NSString *)advertiserID {
   return @"";
}

答案 2 :(得分:2)

请阅读:

https://developers.facebook.com/bugs/242477629268301/

无需更改代码。