分享到 :

唤起手Q小程序(3.3.7)(QQ 8.1.8)

该能力允许第三方直接唤起手Q打开小程序。

  

注意事项
  1. 1. 传的小程序appid会和应用的appid的绑定关系进行校验,如果未绑定不允许唤起。
  2. 2. 第三方APP的plist文件中的LSApplicationQueriesSchemes字段中需要添加,mqqopensdklaunchminiapp,否则无法正常唤起手Q。

  

示例代码

QQApiLaunchMiniProgramObject* launchMiniApp = [QQApiLaunchMiniProgramObject new];
launchMiniApp.miniAppID = self.binding_miniAppId;
launchMiniApp.miniPath = self.binding_miniPath;
launchMiniApp.miniprogramType = [self.binding_miniType integerValue];

SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:launchMiniApp];
QQApiSendResultCode ret = [QQApiInterface sendReq:req];
[QQApiShareEntry handleSendResult:ret];

回调说明

采用通用回调格式"ret=xxx&error_des=xxx",ret为错误码,error_des为错误描述。


解析小程序打开第三方透传的数据(3.3.9)

背景:第三方通过互联分享小程序消息到手Q,可以在path后面传递若干参数,这些参数传到小程序内部后,还可以通过小程序唤起第三方接口透传回第三方,互联现已支持解析这一传递消息。


  • 接入方法

首先找到AppDelegate中的如下系统方法

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

在这些方法中,加上互联解析第三方url的接口

[QQApiInterface handleOpenURL:url delegate(:id)delegate];

其中传入的delegate需要支持如下协议

/**
 处理来自QQ的请求
 */
(void)onReq:(QQBaseReq *)req;

然后在回调中,可以得到新类型QQApiMiniProgramLaunchObject,其中字符串属性appParameter 即为透传的参数


示例代码

/**
 处理来自QQ的请求
 */
-(void)onReq:(QQBaseReq )req {
switch (req.type) {
        case ESHOWMESSAGEFROMQQREQTYPE:// 手Q -> 第三方应用,请求第三方应用展现消息中的数据
            if ([req isKindOfClass:ShowMessageFromQQReq.class]) {
                [self checkIfIsMALaunchApp:((ShowMessageFromQQReq)req).message];
            }
            break;
    }
}
-(void)checkIfIsMALaunchApp:(QQApiObject )obj {
    if (![obj isKindOfClass:QQApiMiniProgramLaunchObject.class]) {
        return;
    }
    QQApiMiniProgramLaunchObject maLaunchApp = (QQApiMiniProgramLaunchObject*)obj; NSLog(maLaunchApp.appParameter);
}
返回顶部