分享到 :

处理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;
}


返回顶部