Я работаю над приложением для клиента, который работает в фоновом режиме.Как определить ориентацию устройства iOS на фоне?
Это не приложение для приложений для приложений, поэтому оно не имеет совершенно одинаковых правил, которые обычно применяются к приложениям для приложений приложений. Даже частные API-интерфейсы являются опцией для этого приложения, но он должен работать на не-jailbroken устройстве. (Приложение будет корпоративным приложением.)
Приложение должно знать текущую ориентацию устройства. Кажется простым, но это не так. Я использую обычный код можно было ожидать:
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
BOOL inLandscape = UIDeviceOrientationIsLandscape(deviceOrientation);
Тем не менее, кажется, что это возвращает ориентацию, которая была в силе, когда приложение перемещается от переднего плана к фону.
Мне нужна ориентация для отслеживания фактической ориентации устройства. Фактически, что я действительно хочу, это ориентация пользовательского интерфейса текущего приложения переднего плана, но Apple делает это очень трудным для вывода. Я соглашусь на ориентацию устройства, если нужно.
Это приложение написано на Objective-C, но я также говорю «Swift», поэтому ответы, выраженные на любом языке, прекрасны.
Просто spitballing здесь: есть несколько фреймворков с [private' deviceOrientation' свойствами] (https://github.com/nst/iOS-Runtime-Headers/search?utf8=%E2%9C%93&q=deviceorientation), частный метод 'UIDevice', называемый' currentDeviceOrientationAllowingAmbiguous: 'и, конечно,' [UIApplication -statusBarOrientation] '. Вы пробовали кого-нибудь из них? –
[Вот подход] (http://codrspace.com/yuvirajsinh/device-orientation-detection-using-coremotion/), который использует «CMMotionManager» от Core Motion для расчета ориентации устройства. –
Вам нужно буквально «отслеживать» ориентацию, как в том, чтобы вести запись обо всех изменениях во время вашего приложения? Или вам просто нужно знать ориентацию, когда приложение возвращается из фона? В последнем случае вы можете просто проверить ориентацию устройства в 'applicationWillEnterForeground:' в AppDelegate. –