Разработка iOS: как я могу предотвратить использование iPad в универсальном приложении в режиме iPad?
Я погружаюсь в iOS, и я создал универсальное приложение, превратившееся в iPhone-приложение. Когда он работает на iPad, он просто загружает белый экран, так как там еще не написан код iPad. Я бы хотел, чтобы он работал в режиме "iPhone" на iPad, если он каким-то образом оказался на iPad. У меня есть свойство "Targeted Device Family", установленное на "iPhone", поэтому оно должно помешать ему появиться в App Store в качестве приложения для iPad, но если у кого-то есть iPad и iPhone, приложение может быть синхронизировано на iPad, после чего он просто загрузит белый экран, потому что он попытается запустить приложение в iPad режиме, в котором у него нет никакого кода для поддержки. В этой ситуации я предпочитаю, чтобы он действительно работал на iPad, но в режиме iPhone.
Мои вопросы...
- Когда iPad работает с универсальным приложением, как он узнает, чтобы запустить его в "режиме iPhone" или выполнить специальный код iPad?
- В универсальном приложении, как он узнает, какой код является iPhone и какой код iPad?
- Как я могу запретить iPad пытаться запустить iPad-код и вместо этого запустить код iPhone?
Прошу прощения, если я пою, как полный нооб, но я. Большое спасибо за вашу мудрость!
Ответы
Ответ 1
- iPad смотрит в приложение Info.plist, для ключа UIDeviceFamily, который является массивом. Значение "1" означает iPhone/iPod Touch, "2" означает "iPad". Если есть "1", но нет "2", вы получаете смоделированную среду iPhone. Это значение автоматически записывается в Info.plist в результате вашего "Целевого семейства устройств". Если вы считаете, что настроили его на iPhone, но все еще получаете сборку iPad, убедитесь, что вы не просто установили его для одной конфигурации сборки. Проверьте Info.plist в своем выпуске приложения, если вы хотите быть действительно уверенным.
- Существует только один двоичный файл, который вы пишете для правильного запуска на любом устройстве.
- Просто не настройте iPad.
Ответ 2
Я предполагаю, что вы действительно хотите удалить "универсальную" возможность и просто сделать это iPhone-приложение.
В Xcode перейдите в Project = > Edit Project Settings = > Build.
Поиск универсального или "Целевое семейство устройств".
Выберите iPhone.
До свидания iPad.
Ответ 3
Когда iPad запускает универсальное приложение, как он узнает, чтобы запустить его в "iPhone режиме" или выполнить специальный код iPad?
iPad ищет Targeted Device Family
, если iPad нет, то он знает, что он должен запускать приложение в режиме iPhone.
В универсальном приложении, как он узнает, какой код является iPhone и какой код iPad?
Когда вы пишете код для приложения, вы должны указать, какое устройство настроено на таргетинг, если на устройство требуется определенное количество действий. (см. пример кода ниже)
Как я могу запретить iPad пытаться запустить iPad-код и вместо этого запустить код iPhone?
Не поддерживайте iPad в своем Targeted Device Family
. Во-вторых, в вашем коде не указывайте, что конкретный код нуждается в определенном устройстве, например:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
/* run something specific for the iPad */
}
else
{
/* run something specific for the iPhone */
}
Ответ 4
-
Если вы создадите универсальное приложение, оно будет использовать ваш код iPad. Невозможно запустить универсальное приложение в "iPhone Mode". Apple проверит, что вы следовали спецификациям дизайна iPad.
-
В универсальном приложении есть два приложения-делегата: AppDelegate_iPhone.h и AppDelegate_iPad.h
-
Вы можете добавить свой код iPhone в AppDelegate_iPad, но Apple не понравится.
Ответ 5
Вы не должны добавлять это в свой файл Info.plist. Вместо этого добавьте его в свои настройки сборки для Apple предложение. В частности, используйте настройку сборки TARGETED_DEVICE_FAMILY.
Если вы используете раскадровки, вы также хотите удалить ключ UIMainStoryboardFile ~ ipad из своего Info.plist, поскольку он будет использоваться независимо от вашего параметра TARGETED_DEVICE_FAMILY.
Удачи!
Ответ 6
Я думаю, что есть запись в файле info.plist для каждого из устройств, в котором говорится, какое главное окно для загрузки.
Возможно, быстрым и грязным решением было бы установить как MainWindow-iPhone, так и MainWindow-iPad в одно и то же главное окно -iPhone.
Ответ 7
Другой способ сделать это (с кодом):
В приложении AppDelegate (если ваше приложение было создано как универсальное приложение) вы можете найти следующий код:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
//iPad...
} else {
//iPhone and iPod Touch...
}
return YES;
}
Здесь вы можете настроить отображение какого-либо вида.
Ответ 8
Так как Xcode 5
, вы можете выбрать целевые устройства разработки из проекта:
В разделе устройств в Development Info
теперь вы можете выбрать:
1-iPhone 2- iPad 3- Универсальный
![enter image description here]()
Ответ 9
Я думаю, что что-то не так с вашей конфигурацией, потому что, если вы нацеливаете код только для iPhone, приложение будет запускаться на iPad с экраном, который был разработан для iPhone (так, уменьшен, с возможностью x2).
- предложения AppStore (iPhone/iPad/оба) зависят от пользовательских настроек
- вы можете поэкспериментировать с Simulator (и выбрать iPad как устройство).
- код тот же для iPad/iPhone!... если вы не используете
[[UIDevice currentDevice] userInterfaceIdiom]
, упомянутые выше...