Отправить приложение в фоновый процесс

Мы не хотим использовать выход (0), чтобы закрыть приложение, однако мы хотим, чтобы приложение программно переходило в фоновый режим и выполнялось без обработки, для пользователей, разрешающих это действие. Есть ли способ программно отправить приложение в фоновый режим без выхода? Имитация нажатия кнопки домой?

Заранее спасибо!


person mejim707    schedule 02.04.2012    source источник


Ответы (3)


Невозможно. Щелчки кнопки «Домой» попадают в частную структуру GSEvents. К сожалению, это exit() или ни одного.

person CodaFi    schedule 02.04.2012
comment
Но во многих местах я читал, что приложение может быть отклонено с помощью выхода (0). Мы не хотим этого. Однако мы хотим дать пользователям возможность установить параметр, который позволяет приложению просто сворачиваться, пока оно обрабатывается и они выполняют другие действия. У нас есть фоновый процесс, который работает потрясающе, но у нас есть возможность сделать это действие автоматически. Мы не хотим нарушать это с помощью exit(0) - person mejim707; 02.04.2012
comment
По иронии судьбы, многие приложения Zinga используют функцию выхода. - person CodaFi; 02.04.2012
comment
Но это приводит к тому, что фоновая обработка не работает, потому что приложение действительно завершается, нечисто, но работает. Нам нужно выполнить фоновые задачи. - person mejim707; 02.04.2012
comment
Почему бы просто не выдать предупреждение о загрузке и не попросить закрыть приложение, если оно занимает слишком много времени? - person CodaFi; 02.04.2012
comment
Думаю, мы могли бы. Я обсуждал такую ​​идею с коллегой. но, честно говоря, это кажется немного глупым. Пользователь должен иметь возможность установить для них параметр автоматического закрытия и запуска. Не задана опция, говорящая: «Эй, вы хотели, чтобы приложение закрылось, но для этого вам нужно нажать кнопку «Домой». - person mejim707; 02.04.2012
comment
Спасибо за комментарий, хотя CodaFi! Сумасшедшие вещи, эта работа разработчиков - person mejim707; 02.04.2012
comment
Это будет не так хуево. Просто напомните пользователю, сколько времени это займет, мягко порекомендуйте закрыть приложение, а затем завершите сделку, напомнив, что работа будет завершена, когда он вернется. - person CodaFi; 02.04.2012

Есть ли способ программно отправить приложение в фоновый режим без выхода?

Нет. Предполагается, что пользователь контролирует приложение — приложение не должно переходить в фоновый режим (или закрываться) по собственному желанию.

person Caleb    schedule 02.04.2012
comment
Но во многих местах я читал, что приложение может быть отклонено с помощью выхода (0). Мы не хотим этого. Однако мы хотим дать пользователям возможность установить параметр, который позволяет приложению просто сворачиваться, пока оно обрабатывается и они выполняют другие действия. У нас есть фоновый процесс, который работает потрясающе, но у нас есть возможность сделать это действие автоматически. Мы не хотим нарушать это с помощью exit(0) - person mejim707; 02.04.2012
comment
Боюсь, то, что вы хотите сделать, и то, что вы можете сделать, — две разные вещи. Лучшим решением было бы позволить вашему приложению оставаться полезным для пользователя, пока оно выполняет ту обработку, о которой вы говорите. Если это невозможно, сообщите пользователю, что делает приложение, и позвольте ему нажать кнопку «Домой», если он захочет. Не вызывайте exit() — пусть пользователь сохраняет управление. - person Caleb; 02.04.2012

Приведенный ниже код можно использовать для программной отправки приложения iOS в фоновый режим без выхода.

DispatchQueue.main.async {
        UIApplication.shared.performSelector(inBackground:NSSelectorFromString("suspend"), with: nil)
    }
person Aditya Sharma    schedule 05.09.2017