网页唤起app,并传值到app ios篇
安卓篇上有相对完整的html代码和lua代码,此处着重写OC底层相关的代码,安卓篇路径点击这里
准备工作是需要在html网页中添加主动拉取app的相关代码
//触发点击事件
$('#add').click(function() {
opens()
})
function opens(){
if((isAndroid&&isWeixin)){
$('#isphone').html("在浏览器中打开");
}else{
if(!hasApp){
//同样没检测到app,去下载
window.location='你的app链接';
}else{
if((isiOS&&isWeixin)) {
//微信中添加遮罩层
$('#isphone').html("在safari中打开");
}else if(!isWeixin&&!isAndroid){
console.log('isiOS');
window.location='userapp://user.app/openwith?roomid='+roomid+‘&type=’+type;
}
}
}
}
- 在plist文件中,增加URL types,将相应的host和scheme填进去(和android一样,此处的host和scheme是网页拉起app的关键,一定不能填错)
- 在AppController.mm文件中,获取从url拿到的参数
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
if(!url){
return NO;
};
NSString * urlString=[url absoluteString];
//NSLog(@"urlString = %@",urlString);
NSLog(@"type shareurl = %@",urlString);
NSRange range = [urlString rangeOfString:@"roomid="];
NSRange gametype = [urlString rangeOfString:@"type="];
if(gametype.location!= NSNotFound ){
NSString *parametersString = [urlString substringFromIndex:gametype.location + 5];
gametype = [parametersString rangeOfString:@"="];
if(gametype.location == NSNotFound){
NSLog(@"type parametersString = %@",parametersString);
[[NSUserDefaults standardUserDefaults] setObject:parametersString forKey:@"IOSOpenUrlGameType"];
[[NSUserDefaults standardUserDefaults] synchronize];
//return YES;
}
}
NSLog(@"rparametersString = text----------");
if(range.location!= NSNotFound){
NSLog(@"range.location!= NSNotFound");
NSString *parametersString = [urlString substringFromIndex:range.location + 7];
range = [parametersString rangeOfString:@"&"];
NSLog(@"rparametersStrin1 = %@",parametersString);
if(range.location != NSNotFound){
NSLog(@"rparametersString2 = %@",parametersString);
parametersString = [parametersString substringToIndex:range.location];
NSLog(@"room parametersString3 = %@",parametersString);
[[NSUserDefaults standardUserDefaults] setObject:parametersString forKey:@"IOSOpenUrlRoomID"];
[[NSUserDefaults standardUserDefaults] synchronize];
return YES;
}
}
return [self application:application handleOpenURL:url];
}
- 在lua代码中去调用OC拿到的值
这样就拿到所需要的参数了,通过获取到的参数就可以去做其他事情了。