При нажатии на виджет я могу справиться, используя следующий метод, если приложение не запущено -
(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
Но если приложение находится в фоновом режиме, как обрабатывать действие?
handleOpenURL будет вызываться независимо от того, находится приложение в фоновом режиме или нет.
handleOpenURL
Официальный документ: Если URL-адрес приходит, когда приложение приостановлено или работает в фоновом режиме, система перемещает ваше приложение на передний план перед вызовом этого метода.
И что влияет на вызов:
Этот метод не вызывается, если делегат возвращает NO изоба метода application:willFinishLaunchingWithOptions: и application:didFinishLaunchingWithOptions:.(Если реализован только один из двух методов, его возвращаемое значение определяет, вызывается ли этот метод.) Если ваше приложение реализует метод applicationDidFinishLaunching: вместо application:didFinishLaunchingWithOptions:, этот метод вызывается, чтобы открыть указанный URL-адрес после того, как приложение имеетбыл инициализирован.
application:willFinishLaunchingWithOptions:
application:didFinishLaunchingWithOptions:
applicationDidFinishLaunching:
И с iOS9.0 лучше использовать следующий метод:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options NS_AVAILABLE_IOS(9_0);