ios: как проверить приложение на предмет расширения контекста - PullRequest
0 голосов
/ 05 марта 2020

Нужно ли глобальное bool, чтобы решить, выполняется ли код в контексте приложения или расширения, или есть какой-то предопределенный #if, который я мог бы использовать?

Нужно решить, могу ли я использовать UserDefaults.standard или откат к общим пользовательским ошибкам

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Так как bundleIdentifier вашей целевой цели будет отличаться от вашего основного приложения, вы можете проверить значение bundleIdentifier. К которым можно получить доступ:

Bundle.main.bundleIdentifier

Я проверил это только на расширении Today и не уверен, будет ли оно работать для других расширений. Для меня вывод был таким:

Основное приложение: com.example.app

Расширение: com.example.app.today

Наконец, этот метод позволит вам дифференцировать расширения, в которых код работает.

static var isInExtension: Bool
{
    //        print ("main bundleIdentifier \(Bundle.main.bundleIdentifier)")
    if Bundle.main.bundleIdentifier?.hasSuffix("Extention") ?? false {
        return true
    }
    return false
}
0 голосов
/ 05 марта 2020

Добавьте -DNSExtension в другие C флаги и другие флаги C ++ в настройках сборки цели расширения. Теперь вы можете проверить расширение как показано ниже

#ifdef NSExtension

#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...