iOS中html打开APP传参

1、在项目info.plist中添加URL Types以供html调用

2.html代码

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>支付页面</title>

</head>

<script type="text/javascript">

    var url = location.search; //获取url中"?"符后的字串
    var typestr="";
    //截取参数 url=xxxx?type=1
    if (url.indexOf("?") != -1) {
        typestr = url.split("type=")[1];
    }

    //支付宝
    if(typestr==1){
         //支付宝调起应用
        window.load=AliPay();
    }
    else if(typestr==2){
        //微信调起应用
        window.load=Weixin();
    }

    //支付宝调起应用,向应用传参数,0表示不做任何操作,1表示为支付宝调起的app,2表示为微信调起的app
    function AliPay(){
        if(confirm("是否打开支付宝?")){//点击了确定
            document.location = "XXXXFromHtml://type:1";
        }
        else{//点击了取消后返回应用
            document.location = "XXXXFromHtml://type:0";
        }
    }

    //微信调起应用
    function Weixinclick(){
        if(confirm("是否打开微信?")){//点击了确定
            document.location = "XXXXFromHtml://type:2";
        }
        else{//点击了取消
            document.location = "XXXXFromHtml://type:0";
        }
    }

</script>
<body>
</body>
</html>

3.客户端代码

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

//打开外部链接回调
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    //网页调起app外面链接url type
    NSString *string =url.absoluteString;
    if ([string hasPrefix:@"xxxxfromhtml://"]) {
       //截取html传递的参数类型
        NSString *type=[[string pathComponents] lastObject];
        NSString *typeStr = [[type componentsSeparatedByString:@":"]lastObject];
        NSInteger apptype = [typeStr integerValue];
//        DebugLog(@"%@",array);
         BaseNavigationController *nav=(BaseNavigationController*)self.window.rootViewController;
         //当前离开应用的控制器
         if ([[nav.childViewControllers lastObject] isKindOfClass:[XXXXPayViewController class]]) {
            //从网页调起app,不会调用充值界面方法,需手动调用
            XXXXPayViewController *scoreVC=[nav.childViewControllers lastObject];
            //在内部调用支付的应用跳转
            [scoreVC fromWebHtmlWithType:apptype];
        }
        return YES;
    }
}

原文地址:https://www.cnblogs.com/weiboyuan/p/9186910.html

时间: 2024-08-05 16:58:52

iOS中html打开APP传参的相关文章

iOS应用内打开App Store应用详情界面

用iPhone浏览UC浏览器的"应用商店"时,发现可以直接在应用内打开App Store中的应用详情和下载页面. 下面来看看怎么实现这个效果吧. 苹果官方文档 "SKStoreProductViewController Class Reference"里有如下介绍: [plain] view plaincopy A SKStoreProductViewController object presents a store that allows the user to

vue中组件间的传参

1.父传子 父组件准备一个数据,通过自定义属性给子组件赋值,进行传递 在子组件中通过 props 属性来接收参数 <body> <div id="app"> <son passdata="msg"></son> </div> </body> <script> Vue.component('son', { template: '<div>父组件的数据为:{{ passdat

函数中对象名的传参形式

1. function setNumber($this,g,d,url){ var gid = $this.parent().attr("data-id"); var eids = $("#hidden").text(); var params = {}; params[g] = gid; //传参 params[d] = eidsl;//传参 if(eids==""){ layer.alert("勾选项为空,请选择"); r

iOS微信里打开app,Universal Links

这两天在弄分享,从第三方应用或者浏览器打开自己app的东西 传统的方式是通过URL Scheme的方式,但是iOS9以后又出了新的更完美的方式Universal Links. 传统的URL Scheme方式微信内置的浏览器都是封锁了所有它投资的公司之外的,只有白名单的才可以(比如京东,B站,等).Universal Links也不能算是完美的实现,但是已经是目前为止最好的了. 就说一下这个东西的介绍,就像在windows里面为某一类型的文件添加了默认的打开方式.只不过这个文件类型变成了某一个“域

Asp.Net中ObjectDataSource控件传参绑定数据

最近在实习,在上头交付的任务中,由于需要使用Asp.Net的ListView控件,因此必然得就使用了ObjectDataSource控件,由于在使用过程中,需要网页中的参数发送到后台后,运行该参数进行查询数据.这过程必然就牵涉到将参数传送给ObjectDataSource控件,然后在进行查询后的数据绑定.下面我们来看下这个过程是如何实现的: 1.创建一个WebForm页面,拖入ListView控件和ObjectDataSource控件 2.配置ObjectDataSource数据源按照以下步骤进

iOS中两个APP之间的跳转和通信

app间的跳转 一:在第一个app首先要做下面这些操作: 1.在info.plist文件中的Information Property List下添加一项:URL types. 2.点开URL types下的item 0,再点开item 0,将item 0下的URL identifier改为URL Schemes. 3.点开URL Schemes下的item 0,在它后面添加skipOne(skipOne为第一个app的跳转标识,这里根据你自己写的来) 二:在第二个app中,在需要跳转到第一个ap

IOS中如何判断APP是否安装后首次运行或升级后首次运行

对于是否为首次安装的App可以使用如下方法来判断 [[NSUserDefaults standardUserDefaults] boolForKey:@"firstLaunch"]; 如果App是通过App Store升级的话可以通过版本号来判断 [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 实际使用可以在didFinishLaunchingWithOptions:

iOS中如何知道app版本已更新

主要用于程序升级,开启程序后是否显示新特性两个方面. 1.苹果app版本 苹果规定,程序的版本只能升不能降.例如1.0->1.1可以,1.1->1.0就不可以,不允许上架. 2.app版本存放位置 版本信息存放在Info.plist文件中,在工程的General栏中也可以看到.当app更新后,这里的版本信息会自动修改,因此获取Info.plist中的版本信息即为最新的版本.如果想人为的修改它们在两处的任意一处均可.  3.代码实现(Swift) 程序中将上次的版本保存入沙盒,然后和最新的做比较

jdbcTemplate中向in语句传参

spring jdbc包提供了JdbcTemplate和它的两个兄弟SimpleJdbcTemplate和NamedParameterJdbcTemplate,我们先从JdbcTemplate入手, 引入问题,领略一下类NamedParameterJdbcTemplate在处理where中包含in时的便利和优雅. 首先创建实体类Employee: 1 public class Employee { 2 private Long id; 3 private String name; 4 priva