Подтвердить что ты не робот

Приложение отклонено, но я не использую UDID

Сегодня мы получили отзывы о нашем представлении, и мы не понимаем сообщенную проблему: "Приложениям не разрешен доступ к UDID и не должен использовать метод uniqueIdentifier UIDevice. Обновите свои приложения и серверы, чтобы связать пользователей с Поставщик или рекламные идентификаторы, представленные в 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?? Какая резолюция?

4b9b3361

Ответ 1

В моем случае это была библиотека ibGoogleAnalytics_debug.a.

Чтобы узнать, какая библиотека использует метод uniqueidentifier, перейдите в папку проекта и введите:

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

Я получил это: Двоичный файл. /My _Project/libGoogleAnalytics_debug.a соответствует

Ответ 2

Решил: Проблема в том, что ваш проект по-прежнему относится к старому SDK, и он компилирует код с помощью ваших старых методов sdk, включая UDID, который отклоняет яблоко.

Исправьте его в своих свойствах сборки SEARCH PATH Пути поиска в базе данных Пути поиска в библиотеке

удалите ненужные значения, такие как старый путь sdk, и поставьте туда текущий путь sdk

очистить все файлы проекта: Окно- > Организатор- > Проект - удалить проект Product- > Clean

Теперь перестройте его и повторно отправьте его в apple.

Наслаждайтесь:)

Ответ 3

Проверьте двоичный файл, сгенерированный командой strings, и найдите uniqueIdentifier:

$ strings YOUR_BINARY | grep uniqueIdentifier

Вероятно, вы найдете его там.

Я обнаружил, что OpenSSL имеет строку uniqueIdentifier, объявленную в своих заголовках, поэтому, вероятно, ваше приложение (или любая статическая библиотека, предоставляемая вашим приложением) включило его.

В моем случае виновник был libspotify.

Ответ 4

У меня была такая же проблема, но я смог указать файл, содержащий uniqueIdentifier, используя следующую команду в терминале в моей папке проекта.

grep -Rnis 'uniqueIdentifier' *

В моем терминале появилось множество строк, причем виновник был libGoogleAdModAds.a. Хотя я и не использовал его в своем коде, он все еще упоминался в мой проект и, следовательно, добавлен в сборку.

Мой источник: http://www.commandlinefu.com/commands/view/3573/search-for-a-string-inside-all-files-in-the-current-directory

Ответ 5

В моем случае для этой проблемы был ответственен BugSense SDK (я использовал устаревшую версию). После обновления до последней версии (3.1.3) все в порядке.

Ответ 6

Я подал ошибку с помощью 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

Ответ 7

У меня такая же проблема сегодня. Я обновляю SDK AdMob до 6.4.1 и отправляю снова, но не использую. Но он прошел проверку загрузки после того, как я отключил код AdMob и не ссылаюсь на его библиотеку.

Согласно объявлению Google, AdMob SDK 6.4 и выше больше не имеют доступа к UDID. Очевидно, Apple так не думает.

Ответ 8

Обычно сторонние библиотеки для аналитики и бета-тестирования используют uniqueIdentifier для отслеживания пользователей (например, тестовый полет или старые версии GA), проверьте, использует ли какая-либо из сторонней библиотеки, которую вы используете. Если это не так, вы можете попросить разъяснения на http://itunesconnect.apple.com.

Ответ 9

У меня была такая же проблема вчера, обновляя мои приложения.
После поиска сторонних библиотек, использующих UDID, я понял, что использовал Отслеживание конверсий для iOS. Эта библиотека использовала UDID, но 10 апреля выпустила обновление, исправляющее эту проблему:

Отслеживание конверсий iOS SDK v1.2.0 больше не обращается к UDID (выпущено 10 апреля 2013 г.).

Надеюсь, это поможет.

Ответ 10

Я пробовал весь день, мое приложение всегда отклонено.

Сначала я попытался найти. | grep -v.svn | grep ".a" | grep -v ".app" | xargs grep uniqueIdentifier в моей папке проекта.

Похоже, что Google Analytics, AdMob и Wikitude SDK использовали uniqueIdentifier. Поэтому я удалил GA, и я обновил AdMob и Wikitude. Теперь больше нет вызовов метода uniqueIdentifier. Когда я делаю grep, результат ничего. Я очистил все в своем проекте, но мое приложение всегда отклонено!

Что мне теперь делать? Любая помощь будет оценена...

EDIT: я нашел эту строку:

IDEWorkspaceWindowController***UniqueIdentifier***_IDEActiveWorkspaceTabController_IDE

В этом файле:

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

Считаете ли вы, что проблема может возникнуть из этой строки?

Ответ 11

Я не думаю, что сам IOS SDK для Facebook использует устаревший "uniqueIdentifier". Я просмотрел источники в https://github.com/facebook/facebook-ios-sdk.

Но когда SDK Facebook генерируется из этих источников, созданный двоичный файл содержит строку. Единственной библиотекой, которая используется SDK, является → Accounts.framework < - из самого IOS!

Итак, похоже, что Apple застрелила собственную ногу!

Изменить: Эрик дал правильный ответ. UIDevice используется в facebook-ios-sdk/src/FBSession.m. Счётная счёт не была проблемой.

Ответ 12

Это все, что Apple делает, все, что вам нужно сделать, это:

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

App.app после распаковки App.ipa, он будет находиться внутри каталога полезной нагрузки.

Просто запустите эту команду внутри каталога полезной нагрузки. Вы можете выполнить тест, используя greping известный метод, который вы используете.

Вы можете заменить armv7 на все, если вы хотите найти все архитектуры, для которых он построен.

Ответ 13

Сегодня я столкнулся с той же проблемой. В openssl есть переменная с именем uniqueIdentifier. Возможно, это вызывает проблему.

Ответ 14

У меня была такая же проблема. Это оказалось RevMob sdk. Последние 5.9.0 (2013/05/30) швы, чтобы решить проблему.