网页唤起app,并传值到app中使用的全过程 ios篇

网页唤起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;
			}
	    }
	 }
}

  1. 在plist文件中,增加URL types,将相应的host和scheme填进去(和android一样,此处的host和scheme是网页拉起app的关键,一定不能填错)
    网页唤起app,并传值到app中使用的全过程 ios篇_第1张图片
    1. 在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];
}
  1. 在lua代码中去调用OC拿到的值
    网页唤起app,并传值到app中使用的全过程 ios篇_第2张图片
    这样就拿到所需要的参数了,通过获取到的参数就可以去做其他事情了。

你可能感兴趣的:(iOS)