web-dev-qa-db-ja.com

アプリは拒否されましたが、UDIDは使用しません

本日、提出に関するフィードバックを受け取りましたが、報告された問題を理解していません:「アプリはUDIDへのアクセスを許可されていないため、UIDeviceのuniqueIdentifierメソッドを使用しないでください。 iOS 6で導入された識別子。」.

私たちはudidに関する拒否について知っていますが、私たちのアプリはこれを使用しません!これを読んだ後、私たちのチームはアプリを再評価しましたが、「UIDevice uniqueIdentifier」からの出現は見つかりませんでした。また、使用されているすべてのライブラリを改訂しましたが、実際にはUDIDからの呼び出しは見つかりません。

誰かアイデアがありますか?

調査後、「greap」コマンドを実行し、FacebookSDKについて疑っています。

my-app-directory $ grep -Rnis 'uniqueIdentifier' *
Binary file MyApp/FacebookSDK.framework/FacebookSDK matches
Binary file MyApp/FacebookSDK.framework/Versions/A/FacebookSDK matches
Binary file MyApp/FacebookSDK.framework/Versions/Current/FacebookSDK matches
Binary file MyApp/MyApp.xcodeproj/project.xcworkspace/xcuserdata/myuser.xcuserdatad/UserInterfaceState.xcuserstate matches

FacebookSDKはuniqueIdentifierを使用しますか?解像度は?

45
Tiago

私の場合、それはibGoogleAnalytics_debug.aライブラリでした。

Uniqueidentifierメソッドを使用しているライブラリを見つけるには、プロジェクトフォルダーに移動して以下を入力します。

$ find . | grep -v .svn  | grep "\.a" | grep -v "\.app" | xargs grep uniqueIdentifier

私はこれを得ました:バイナリファイル./My_Project/libGoogleAnalytics_debug.aは一致します

86
scurioni

解決済み:問題は、プロジェクトがまだ古いSDKを参照しており、Apple拒否するUDIDを含む古いSDKメソッドを使用してコードをコンパイルすることです。

SEARCH PATH Frameworkのビルドプロパティで修正してくださいSearch Paths Library Search Paths

古いSDKパスなどの不要な値を削除し、現在のSDKパスをそこに配置する

すべてのプロジェクトのファイルを消去します:ウィンドウ->オーガナイザー->プロジェクト-プロジェクトを削除します製品->消去

再構築して、Appleに再送信します。

楽しい :)

7
Elad Adi Vaknin

stringsコマンドで生成したバイナリを確認し、uniqueIdentifierを探します。

$ strings YOUR_BINARY | grep uniqueIdentifier

おそらくそこにあるでしょう。

OpenSSLのヘッダーにはuniqueIdentifierという文字列が宣言されているため、アプリケーション(またはアプリで提供する静的ライブラリ)に含まれている可能性があります。

私の場合、犯人はlibspotifyでした。

5
Igor

私は同じ問題を抱えていましたが、プロジェクトフォルダー内のターミナルで次のコマンドを使用して、uniqueIdentifierを含むファイルを特定できました。

grep -Rnis 'uniqueIdentifier' *

これにより、端末ウィンドウに多数の行がエコーされました。犯人はlibGoogleAdModAds.aです-実際には使用していませんでしたが私のコード、それはまだ私のプロジェクトで参照されていたため、ビルドに追加されました。

私のソースは: http://www.commandlinefu.com/commands/view/3573/search-for-a-string-inside-all-files-in-the-current-directory

3
roycable

私の場合、この問題の原因はBugSense SDKでした(古いバージョンを使用しました)。最新バージョン(3.1.3)にアップグレードした後は、すべて問題ありません。

3

Facebookにバグを報告しましたが、次善策があります。

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

SDKで、facebook-ios-sdk/src/FBSession.mを編集します

コメントアウト

- (BOOL)isMultitaskingSupported {
/*
UIDevice *device = [UIDevice currentDevice];
return [device respondsToSelector:@selector(isMultitaskingSupported)] &&
[device isMultitaskingSupported];*/
return TRUE;
}

とにかくIOS 4.0以降。

参照を削除し、.aを再構築します

3
Eric

今日も同じ問題があります。 AdMob SDKを6.4.1にアップグレードし、再度送信しますが、使用しません。しかし、AdMobコードを無効にしてライブラリにリンクしなかった後、アップロードチェックに合格しました。

Googleの発表によると、AdMob SDK 6.4以降はUDIDにアクセスしなくなりました。明らかに、Appleはそうは思わない。

2
Suyuan Chang

通常、分析およびベータテスト用のサードパーティライブラリはuniqueIdentifierを使用してユーザーを追跡し(たとえば、テストフライトや古いバージョンのGA)、使用しているサードパーティライブラリのいずれかがこれを使用しているかどうかを確認します。そうでない場合は、 http://itunesconnect.Apple.com で説明を求めることができます。

2
Raspu

Facebook IOS SDK自体は非推奨の 'uniqueIdentifier'を使用しているとは思わない。 https://github.com/facebook/facebook-ios- sdk

しかし、Facebook SDKがこのソースから生成されると、作成されたバイナリには文字列が含まれます。 SDKで使用される唯一のライブラリは、-> Accounts.framework <-from IOSそのもの!

Appleは自分の足を撃った!

編集: Eric は正しい答えを与えました。 UIDeviceは、facebook-ios-sdk/src/FBSession.mで使用されます。 Accounts.frameworkは問題ではありませんでした。

1
Gernot Ullrich

私は一日中試しましたが、私のアプリは常に拒否されます。

最初に、findを試しました。 | grep -v .svn | grep ".a" | grep -v ".app" |プロジェクトフォルダー内のxargs grep uniqueIdentifier.

Google Analytics、AdMob、およびWikitude SDKがuniqueIdentifierを使用しているようです。そこでGAを削除し、AdMobとWikitudeを更新しました。現在、uniqueIdentifierメソッドへの呼び出しはありません。 grepを実行しても、結果は何もありません。プロジェクトのすべてを削除しましたが、アプリは常に拒否されます!

今何ができますか?任意の助けをいただければ幸いです...

編集:私はこの行を見つけました:

IDEWorkspaceWindowController***UniqueIdentifier***_IDEActiveWorkspaceTabController_IDE

このファイル内:

MYPROJECT.xcodeproj/project.xcworkspace/xcuserdata/MYUSERNAME.xcuserdatad/UserInterfaceState.xcuserstate

問題はこの行から来ると思いますか?

1
BoloG

昨日、アプリケーションの更新でも同じ問題が発生しました。
UDIDを使用してサードパーティライブラリを検索した後、iOSのコンバージョントラッキングを使用していることに気付きました。このライブラリはUDIDを使用していましたが、4月10日にはこの問題を修正するアップデートがリリースされました。

IOSコンバージョントラッキングSDK v1.2.0はUDIDにアクセスしなくなりました(2013年4月10日リリース)。

役に立てば幸いです。

1
mlabraca

これはすべてAppleで、必要なことは次のとおりです。

strings - -a -Arch armv7 "App.app/App" | grep uniqueIdentifier

App.appは、App.ipaを解凍した後、ペイロードディレクトリ内に配置されます。

ペイロードディレクトリ内でそのコマンドを実行するだけです。使用する既知のメソッドをグレーピングすることにより、テストを実行できます。

ビルド対象のすべてのアーキテクチャを検索する場合は、armv7allに置き換えることができます。

1
mskw

今日も同じ問題に直面しています。 opensslにはuniqueIdentifierという名前の変数があります。たぶんそれが問題を引き起こしています。

0
user1349923

同じ問題がありました。 RevMob sdkであることが判明しました。最新の5.9.0(2013/05/30)の継ぎ目で問題を修正します。

0