处理QQ业务的Universal Links回调
3.1 接入指引
在application:continueUserActivity:restorationHandler系统回调中统一处理UniversalLink拉起,
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler NS_AVAILABLE_IOS(8_0); |
首先调用CanHandleUniversalLink判断是否可以处理当前的UniversalLink链接,
/** * (静态方法)sdk是否可以处理应用拉起协议 * \param url 处理被其他应用呼起时的逻辑 * \return 处理结果,YES表示可以 NO表示不行 */ + (BOOL)CanHandleOpenURL:(NSURL *)url; |
如果返回YES,才可继续调用其他UniversalLink相关处理接口。
/** * (静态方法)处理应用的UniversalLink拉起协议 * \param url 处理被其他应用呼起时的逻辑 * \return 处理结果,YES表示成功,NO表示失败 */ +(BOOL)HandleUniversalLink:(NSURL *)url; /** 处理由手Q唤起的universallink跳转请求 \param universallink 待处理的universallink跳转请求 \param delegate 第三方应用用于处理来至QQ请求及响应的委托对象 \return 跳转请求处理结果,YES表示成功处理,NO表示不支持的请求协议或处理失败 */ +(BOOL)handleOpenUniversallink:(NSURL*)universallink delegate:(id<QQApiInterfaceDelegate>)delegate; |
3.2 示例代码
更完整的示例请参考SDKDemo。
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler NS_AVAILABLE_IOS(8_0); { // Demo处理Universallink的示例代码 if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) { NSURL *url = userActivity.webpageURL; if (url && [TencentOAuth CanHandleUniversalLink:url]) { // 兼容[QQApiInterface handleOpenURL:delegate:]的接口回调能力 [QQApiInterface handleOpenUniversallink:url delegate:(id<QQApiInterfaceDelegate>) [QQApiShareEntry class]]; return [TencentOAuth HandleUniversalLink:url]; } } return YES; } |