iOS разные идентификаторы связывают с одним и тем же приложением
Я пытаюсь следовать соглашению, описанному в этом ответе, для управления как магазином приложений, так и корпоративной версией одного и того же приложения, но наблюдаю действительно интересное поведение.
Как описано в связанном ответе, я создал новую схему, определил новую конфигурацию сборки "Enterprise" и настроил схему предприятия для использования отдельного и нового идентификатора пакета. Обе схемы указывают на одну и ту же цель, которая для переключения поведения использует новую конфигурацию сборки. Я успешно могу создать корпоративную сборку и распространять ее по беспроводной сети, однако, когда я устанавливаю обе версии одного и того же приложения на одном и том же имитаторе или телефоне, корпоративная версия фактически запускает версию приложения в магазине приложений. Любые изменения, которые я делаю, относящиеся к конкретному предприятию, не отражаются. Даже когда я закрываю приложение - анимация iOS7 возвращается на домашний экран, анимируется обратно на значок магазина приложений, а не на корпоративный.
Очевидно, я хочу иметь возможность поддерживать их как отдельные версии, которые работают независимо. Я чувствую, что должен в корне неправильно понимать цели и схемы, чтобы получить такое поведение. Любая помощь будет принята с благодарностью.
2 ответа
Довольно интересная ошибка.
То, что происходило, было:
- Мы использовали логин на Facebook для аутентификации в наших собственных сервисах в корпоративной версии.
- FB SDK вступит во владение и выкинет к вебу / представлению или приложению fb, в зависимости от его собственной логики. Критически - мы использовали то же самое "приложение" на Facebook, настроенное на их сайте для разработчиков.
- Когда возвращается fb, он вызывает схему URL, обозначенную
fb{app_id}
- iOS решила (последовательно) открыть приложение, которое было сначала установлено, которое будет отвечать этой схеме URL. В большинстве случаев это была версия магазина приложений, а не корпоративная версия.
Решение для этого - может быть, на данный момент, очевидно - состоит в том, чтобы использовать два разных приложения facebook, чтобы iOS могла направить возвращаемый ответ OAuth в соответствующее приложение. В соответствии с ответом, что я изначально отработал, это лучше всего сделать...
- Создание нового пользовательского параметра сборки под названием
FACEBOOK_ID
- Используйте идентификатор производственного приложения для отладки и выпуска, а новый идентификатор для предприятия.
- В вашем info.plist измените значение вашего
FacebookAppID
быть${FACEBOOK_ID}
- В ваших типах URL, измените схему facebook, чтобы быть
fb${FACEBOOK_ID}
- Это должно успешно направить ваш логин на Facebook.
Имейте в виду, что это общая потенциальная ошибка для ВСЕХ глубоких ссылок, а не только для входа в Facebook.
Это проще в использовании URL Scheme Suffix
вместо отдельных приложений Facebook. С помощью Суффикса схемы URL вы можете добавить суффиксы к идентификатору пакета, например: com.example.App.live и com.example.App.beta. Таким образом, схема URL-адреса Facebook знает, какое приложение открыть после аутентификации.
См. Документацию на сайте разработчиков Facebook для получения дополнительной информации по адресу: https://developers.facebook.com/docs/ios/troubleshooting.