Условное открытие приложения с помощью Swift и намерений приложения в ярлыках iOSIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Гость
 Условное открытие приложения с помощью Swift и намерений приложения в ярлыках iOS

Сообщение Гость »


Я пытаюсь создать простое приложение, которое «блокирует» другие приложения, если не выполняется определенное условие. В настоящее время я использую ярлыки IOS и настроил автоматизацию, которая открывает мое приложение A всякий раз, когда открывается другое приложение B.

Если условие не выполнено, я представляю, что поток будет выглядеть так:
[*]Откройте приложение А. [*]Вместо этого открывается мое приложение Б. [*]Я устанавливаю флажок в своем приложении Б. [*]Я возвращаюсь к приложению А, и оно работает как положено.
Если условие уже выполнено, приложение А будет работать как положено с самого начала.

Что уже пробовали

Моя первая попытка заключалась в использовании AppIntent и программном изменении openAppWhenRun в зависимости от условия. Однако я довольно быстро понял, что изменение значения openAppWhenRun не изменится, если AppIntent действительно откроет мое приложение. Код для этого выглядел так: значение openAppWhenRun изменяется в другой функции.

struct BlockerIntent: AppIntent { static let title: LocalizedStringResource = «Приложение-блокировщик» статическое описание let: LocalizedStringResource = "Блокирует приложение до тех пор, пока не будет выполнено условие" статическая переменная openAppWhenRun: Bool = false @Главный актер асинхронные броски func Perform() → some IntentResult { вернуть .результат() } } Другая попытка включала установку openAppWhenRun значения false во внешнем AppIntent и открытие другого внутреннего AppIntent, если условие выполнено. Если условие в моем приложении выполнено, для openAppWhenRun установлено значение true, и вместо открытия внутреннего AppIntent выдается ошибка. Все работает так, как и ожидалось, но каждый раз, когда я открываю «заблокированное» приложение, появляется уведомление об ошибке.

struct BlockerIntent: AppIntent { static let title: LocalizedStringResource = «Приложение-блокировщик» статическое описание let: LocalizedStringResource = "Блокирует приложение до тех пор, пока не будет выполнено условие" статическая переменная openAppWhenRun: Bool = false асинхронные броски func Perform() -> some IntentResult и OpensIntent { если (BlockerIntent.openAppWhenRun) { выбросить Error.notFound } return .result(opensIntent: OpenBlockerApp()) } Ошибка перечисления: Swift.Error, CustomLocalizedStringResourceConvertible { дело не найдено вар localizedStringResource: LocalizedStringResource { переключить себя { case .notFound: вернуть «Игнорировать это сообщение» } } } } структура OpenBlockerApp: AppIntent { static let title: LocalizedStringResource = «Открыть приложение блокировки» статическое описание let: LocalizedStringResource = «Открывает приложение-блокировщик» статическая переменная openAppWhenRun: Bool = true @Главный актер асинхронные броски func Perform() → some IntentResult { вернуть .результат() } } Моя третья попытка похожа на предыдущую, но вместо этого я использовал два разных внутренних AppIntent. Единственная разница между ними заключалась в том, что у одного было openAppWhenRun = false, а у другого openAppWhenRun = true.

struct BlockerIntent: AppIntent { static let title: LocalizedStringResource = «Приложение-блокировщик» статическое описание let: LocalizedStringResource = "Затемняет приложение до тех пор, пока не будет выполнено условие" статическая переменная openAppWhenRun: Bool = false асинхронные броски func Perform() -> some IntentResult и OpensIntent { если (BlockerIntent.openAppWhenRun) { return .result(opensIntent: DoNotOpenBlockerApp()) } еще { return .result(opensIntent: OpenBlockerApp()) } } } При попытке этого возникает следующая ошибка:

Функция объявляет непрозрачный тип возвращаемого значения «some IntentResult и OpensIntent», но операторы возврата в ее теле не имеют соответствующих базовых типов

Я также пытался открыть приложение с помощью URL-ссылки, но безуспешно или практически безуспешно, часто заканчиваясь бесконечным циклом. Я попробовал ForegroundContinuableIntent, но он не работал должным образом, поскольку зависит от ввода данных пользователем.
>
Есть ли способ сделать то, чего я пытаюсь достичь? Я видел другие приложения, использующие подобную концепцию, поэтому считаю, что это возможно.

Большое спасибо!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»