# App获取开放标签<wx-open-launch-app>中的extinfo数据
# 说明
本文档主要介绍微信内H5页面通过用户点击微信开放标签<wx-open-launch-app>
跳转App,App侧获取该开放标签中extinfo字段的方式。
# 接入微信OpenSDK
若需要获取唤起App时携带的数据,App首先需要接入微信OpenSDK。
!!!注意: 本文档中所指的AppID均是指接入OpenSDK时申请的App的AppID, 非开放标签中的AppID
微信OpenSDK的相关文档: iOS:
Android:
# App侧获取开放标签传递的extinfo数据
请确保已经按照上述步骤接入OpenSDK并验证成功接入
# iOS示例代码
重写AppDelegate.m或SceneDelegate的相关方法(参考上述步骤中的接入文档):
//AppDelegate.m
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
//开启SDK Log
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
NSLog(@"WeChatSDK: %@", log);
}];
// 在调用WXApi的handle方法前,须先调用registerApp注册。ret为注册结果,若注册失败,请根据sdk的log排查原因
BOOL ret = [WXApi registerApp:APP_ID universalLink:UNIVERSAL_LINK];
if ([WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]]) {
/// handled by OpenSDK
}
return YES;
}
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler
{
//开启SDK Log
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
NSLog(@"WeChatSDK: %@", log);
}];
// 在调用WXApi的handle方法前,须先调用registerApp注册。ret为注册结果,若注册失败,请根据sdk的log排查原因
BOOL ret = [WXApi registerApp:APP_ID universalLink:UNIVERSAL_LINK];
if ([WXApi handleOpenUniversalLink:userActivity delegate:[WXApiManager sharedManager]) {
/// handled by OpenSDK
}
return YES;
}
重写WXApiDelegate的onReq方法:
/*! @brief 收到一个来自微信的请求,第三方应用程序处理完后调用sendResp向微信发送结果
*
* 收到一个来自微信的请求,异步处理完成后必须调用sendResp发送处理结果给微信。
* 可能收到的请求有GetMessageFromWXReq、ShowMessageFromWXReq等。
* @param req 具体请求内容,是自动释放的
*/
- (void)onReq:(BaseReq*)req
{
//获取开放标签传递的extinfo数据逻辑
if ([req isKindOfClass:[LaunchFromWXReq class]])
{
WXMediaMessage *msg = req.message;
NSString *openID = req.openID;
NSString *extinfo = req.msg.messageExt;
// handle...
}
}
# Android 示例代码
重新IWXAPIEventHandler的OnReq方法获取extInfo
public class WXEntryActivity extends Activity implements IWXAPIEventHandler{
private IWXAPI api;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化和注册
IWXAPI api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, false);
Intent intent = getIntent();
api.handleIntent(intent, this)
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
api.handleIntent(intent, this);
}
/**
* 从微信启动App
* @param req
*/
@Override
public void onReq(BaseReq req) {
//获取开放标签传递的extinfo数据逻辑
if(req.getType() == ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX && req instanceof ShowMessageFromWX.Req) {
ShowMessageFromWX.Req showReq = (ShowMessageFromWX.Req) req;
WXMediaMessage mediaMsg = showReq.message;
String extInfo = mediaMsg.messageExt;
//Handle...
}
}
@Override
public void onResp(BaseResp resp) {
}
}