37 lines
1.4 KiB
Objective-C
37 lines
1.4 KiB
Objective-C
//
|
||
// KBExtensionAppLauncher.h
|
||
// CustomKeyboard
|
||
//
|
||
// 封装:在键盘扩展中拉起主 App(Scheme / Universal Link + 响应链兜底)。
|
||
//
|
||
|
||
#import <UIKit/UIKit.h>
|
||
|
||
NS_ASSUME_NONNULL_BEGIN
|
||
|
||
@interface KBExtensionAppLauncher : NSObject
|
||
|
||
/// 通用入口:优先尝试 primaryURL,失败后尝试 fallbackURL,
|
||
/// 两者都失败时再通过响应链(openURL:)做兜底。
|
||
/// - Parameters:
|
||
/// - primaryURL: 第一优先尝试的 URL(可为 Scheme 或 UL)
|
||
/// - fallbackURL: 失败时的备用 URL(可为 nil)
|
||
/// - ivc: 当前的 UIInputViewController(用于 extensionContext openURL)
|
||
/// - source: 兜底时用作起点的 responder(通常传 self 或 self.view)
|
||
/// - completion: 最终是否“看起来已成功发起”打开动作(不保证一定跳转到 App)
|
||
+ (void)openPrimaryURL:(NSURL * _Nullable)primaryURL
|
||
fallbackURL:(NSURL * _Nullable)fallbackURL
|
||
usingInputController:(UIInputViewController *)ivc
|
||
source:(UIResponder *)source
|
||
completion:(void (^ _Nullable)(BOOL success))completion;
|
||
|
||
/// 简化版:只针对单一 Scheme 做尝试 + 响应链兜底。
|
||
+ (void)openScheme:(NSURL *)scheme
|
||
usingInputController:(UIInputViewController *)ivc
|
||
source:(UIResponder *)source
|
||
completion:(void (^ _Nullable)(BOOL success))completion;
|
||
|
||
@end
|
||
|
||
NS_ASSUME_NONNULL_END
|