Я делаю приложение, которое использует HealthKit. Приложение не должно работать на iPad, и поэтому мой метод viewDidLoad
содержит инструкцию if/then/else, чтобы показать предупреждение пользователям iPad. Это мой код:Не удается обнаружить устройство как iPad
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0") && [HKHealthStore isHealthDataAvailable] == 1) {
...
}
else {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Whoops!" message:@"Looks like your device doesn't support HealthKit :(" preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:alertController animated:1 completion:^(){
NSLog(@"Showed error alert because of unsupported device.");
}];
}
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0")
бит от this gist.
UIAlertController должен показать, когда устройство iPad, не работает iOS 8.0+ или просто (по какой-то другой причине) не может использовать HealthKit. Это хорошо на бумаге, но когда я запускаю приложение на симуляторе iPad 2 с iOS 8, приложение запускается как обычно и не отображает предупреждение. Для записи я знаю, что у предупреждения нет кнопок, но я не хочу, чтобы он уходил. Он должен отображаться только на iPad или устройстве с размером менее iOS 8, и поэтому не нужно уходить, когда он отображается.
Итак, почему мое приложение не показывает вид предупреждения на iPad? На консоли нет ошибок.
EDIT: уведомление без кнопок не будет в конечном продукте, просто в процессе тестирования. Однако точка остается, поскольку предупреждение все еще должно появляться.
Apple не позволит вам это сделать. Приложения для iPhone ДОЛЖНЫ работать как на iPad. Вы можете сделать приложение, конечно, определенным, но в целом ваша попытка предотвратить запуск на iPad не будет работать и не будет принята, если это произойдет. – rmaddy
@rmaddy Я знаю, это просто проверка системы во время разработки. Независимо от того, нравится это яблоку или нет, эта работа должна работать в симуляторе, но это не так. –
@rmaddy, вероятно, должен был упомянуть об этом в вопросе. Я только что отредактировал вопрос, чтобы сделать это ясно. –