从外部跳转到自己的app,并且根据参数不同做不同的操作
2018-03-06 13:11
513 查看
简介:不发版本能够切换是灰度环境还是线上环境,为了解决这个问题,所做的事情;同理这个方法也可以做一些跳转和打开的操作
准备:
在plist 里面添加 : 里面放入bundleid ,放入跳转时候的协议名字<dict>
<key>CFBundleURLName</key>
<string>你的app的bundle ID</string>
<key>CFBundleURLSchemes</key>
<array>
<string>weejinfu801</string>
</array>
</dict>
外部URL样式:操作内容 weejinfu801://?action=eve&ps=801325&sw=999
网页 114.112.70.156:8002/user/checkenv (对内的操作需要密码,只看上边的第一行就可以)内部处理的代码是如下这样写:-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
准备:
在plist 里面添加 : 里面放入bundleid ,放入跳转时候的协议名字<dict>
<key>CFBundleURLName</key>
<string>你的app的bundle ID</string>
<key>CFBundleURLSchemes</key>
<array>
<string>weejinfu801</string>
</array>
</dict>
外部URL样式:操作内容 weejinfu801://?action=eve&ps=801325&sw=999
网页 114.112.70.156:8002/user/checkenv (对内的操作需要密码,只看上边的第一行就可以)内部处理的代码是如下这样写:-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
//可以控制是那一个浏览器来的,如果是指定引用程序发起的才可以打开,这样做到了应用系的贯通和安全
if ([sourceApplication isEqualToString:@"com.apple.mobilesafari"]) {//safari条转过来的,安全过滤NSArray *subparameter = [[url query] componentsSeparatedByString:@"&"]; //用字典来存储,就可以任意参数数量,安全一些. NSMutableDictionary *parameterDict = [NSMutableDictionary dictionary]; for (NSMutableString *parameter in subparameter) { NSArray *parameterArr = [parameter componentsSeparatedByString:@"="]; [parameterDict setObject:parameterArr[1] forKey:parameterArr[0]]; //第一个是key 第二个是内容 值 } //遍历所有参数,包含action的那么判断action里面有没有login,有就是唯一的,登录功能,还需要有other为电话号码的一个参数,如果没有这个参数,也可以调用万能方法,在最外层else调用 if ([[parameterDict allKeys] containsObject:@"action"]) { if ([[parameterDict objectForKey:@"action"] isEqualToString:@"login"]) { [[NSUserDefaults standardUserDefaults] setObject:[parameterDict objectForKey:@"other"] forKey:@"userPhone"]; [self presentLoginViewControllerAnimated:YES]; }else if ([[parameterDict objectForKey:@"action"] isEqualToString:@"eve"]){ if ([[parameterDict allKeys] containsObject:@"ps"] && [[parameterDict objectForKey:@"ps"] isEqualToString:@"801325"]) { if ([[parameterDict allKeys] containsObject:@"sw"] && [[parameterDict objectForKey:@"sw"] isEqualToString:@"999"]) { //线下环境 }else{ //线上环境 } } //万能方法,,,找参数// const char * className = [[parameterDict objectForKey:@"location"] UTF8String];// Class kclass = objc_getClass(className);// if (!kclass)// {// Class superClass = [UIViewController class];// kclass = objc_allocateClassPair(superClass, className, 0);// }// //注册// objc_registerClassPair(kclass);// //实例化// id instance = [[kclass alloc] init];// //跳转到// UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:instance];// [self.window.rootViewController presentViewController:nvc animated:YES completion:^{}]; } }else{//没有功能,不推荐,推荐有功能,但不是login的时候 传递sel 和 参数,这样调用任意控制器的任意方法,如果没有sel 和参数,那么单纯跳转到对应控制器 //为了安全线判断是否有这个key if ([[parameterDict allKeys] containsObject:@"location"]) { const char * className = [[parameterDict objectForKey:@"location"] UTF8String]; Class kclass = objc_getClass(className); if (!kclass) { Class superClass = [UIViewController class]; kclass = objc_allocateClassPair(superClass, className, 0); } //注册 objc_registerClassPair(kclass); //实例化 id instance = [[kclass alloc] init]; //跳转到 UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:instance]; [self.window.rootViewController presentViewController:nvc animated:YES completion:^{}]; } } } return YES;}
相关文章推荐
- 从网页跳转至APP 并且获取参数
- 检查页面参数,根据返回类型不同进行不同的操作
- MFC接收外部程序执行的shellexecute中传递的参数来执行不同操作
- app判断链接参数后缀跳转不同地址
- SQL 游标使用的小例子,对于每行数据根据参数的不同进行Insert或Update操作.
- 2、nginx中使用Lua根据url参数长度跳转到不同的upstream
- 如何进行定义特性(Attribute),并且在程序中如何检索定义的特性,可以根据用户定义的不同特性进行不同的操作。
- app判断链接参数后缀跳转不同地址的方法
- Nginx根据用户请求的不同参数返回不同的json值
- asp.net 自己封装数据库操作一个类中一个自定义方法Execute(),非常实用,省去了麻烦的中间过程,动态参数
- 自己的APP里跳转到系统的日历
- 关于Android 程序跳转到 相应app的相关操作
- [ASP.NET]按键跳转以及按Enter以不同参数提交,及其他感应事件
- 如何将自己的App作为外部数据源提供给Android系统搜索?
- mysql存储过程中根据传入参数,动态拼sql语句并且执行
- 制作一个银行卡用户登录页面,提交后连接数据库进行登录验证,根据验证结果跳转到不同页面
- 在web中判断是否有app,没有则跳转,包括读取a标签参数,获取后台数据
- 根据存储过程参数是否为空获取不同的数据集
- 外部app扫码进入自己app的下载页面
- 根据select的选项不同跳转到不同的页面