web-dev-qa-db-ja.com

Facebook SDKおよびFlurry SDKのAdvertisingIdentifierが原因でアプリが拒否されました

Facebook SDKとFlurry SDKのadvertisingIdentifierが原因で私のアプリが拒否されました!最新のFacebook SDK (3.12)とFlurry SDKでadvertisingIdentifierが見つかった。多分あなたは以下の方法であなたのライブラリの出現をチェックすることができます:

ターミナルでライブラリとしてFacebookSDK.frameworkを開き、次のコマンドを入力しました

otool -v -s __TEXT __objc_methname FacebookSDK | grep advertisingIdentifier

flurry SDKについても同様です。

しかし、私は何をすべきかわかりません。

お知らせ:Flurryは最近、「advertisingIdentifier」を含まないSDKを更新しましたが、Facebookはまだ更新していません。

23
chawki

コンパイルされたフレームワークではなく、 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 @"";
}
12
Andrew

更新:

以下に回答して以来、私はアプリをストアに送信しましたが、以下に提案されている編集では、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はインストール広告キャンペーンを最適化できません)。

古い返信:

私の場合、これでは十分ではないようです。確かに、AdSupport Frameworkを完全に削除したかったのです。 Facebook SDK 3.12では、プロジェクトまたはポッドファイルに含まれていなくても、AdSupport Frameworkは常にインポート/リンクされているようです(実際、私は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にあります)。

これは私にとってはうまくいきました、そして今私のアプリの実行ファイルはAdSupportから無料です。

17
Diego

これを読んでください:

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

コードを変更する必要はありません。

2
Juraj Antas

プロジェクトフォルダーのバンドルバージョンとしてFacebook-SDKを削除してから、cocoapodsを作成し、これらの最後のバージョンを接続する必要があります。

 pod 'FBSDKCoreKit'
 pod 'FBSDKShareKit'
 pod 'FBSDKLoginKit'
0
serdaryillar