IOS通过H5定制唤醒支付宝APP进行支付

本文介绍了在iOS和Android平台上实现支付宝APP唤醒的不同方法。针对iOS的特殊限制,如Safari浏览器的安全策略,提供了具体的解决方案,包括如何通过新开窗口绕过限制及不同浏览器的兼容处理。

IOS唤醒支付宝APP的协议和安卓稍有区别,需要整个json数据进行urlencode来拼接到协议url内

在IOS内,QQ浏览器和其他浏览器有区别,需要另外的支付宝唤醒url

//唤起客户端快捷参数
var data = {"requestType":"SafePay","fromAppUrlScheme":"alipays","dataString":"h5_route_token=\"RZ41QkLuzjZPgEfvTaAM2Vses2JgbtmobilecashierRZ41\"&is_h5_route=\"true\""};                
if(isAndroid) {
    var alipaysUrl = 'alipays://platformapi/startApp?appId=20000125&orderSuffix=' + o.android +'#Intent;scheme=alipays;package=com.eg.android.AlipayGphone;end';
}
//fix for iOS QQ browser
else if (ua.indexOf('mqqbrowser') > -1) {
    var alipaysUrl = 'alipay://alipayclient/?' + o.android;
}
else {
    var alipaysUrl = 'alipay://alipayclient/?' + o.ios;
}

在IOS中,需要注意的地方是 safari浏览器 会对打开新窗口判断是否为恶意,并且不能通过iframe来唤醒APP,只能通过新开窗口打开 唤醒的url 进行唤醒,然而在苹果端不能直接用js进行了ajax回调后打开新窗口,它的安全策略是 只能是用户点击的js逻辑内 ajax 回调的逻辑前 才能执行,也就意味着 需要用户点击 唤醒支付的事件后 先打开 新窗口然后执行ajax 回调 进行支付宝app唤醒。

代码:

// js点击后的执行逻辑

      // 苹果端safari浏览器使用时,先打开一个窗口预用于唤醒支付宝APP
      if(!/Windows/.test(navigator.userAgent) && /Safari/.test(navigator.userAgent) && broker_type == 'ios') {
        // 如果是苹果平板的QQ浏览器,则提示下载APP或者推荐自带浏览器使用
        if(/mqbhd/.test(navigator.userAgent.toLowerCase())) {
          alert("请下载游戏APP进行充值")
          return false;
        }

        if(!/mqqbrowser/.test(navigator.userAgent.toLowerCase())) {
          // 其他苹果设备正常执行
          iphone_open_w_id = window.open();
        }
      }


// ajax回调后的执行逻辑

        if((!/mqqbrowser/.test(navigator.userAgent.toLowerCase()) && /Safari/.test(navigator.userAgent)) && !/Chrome/.test(navigator.userAgent)) {
          
          // 如果客户端是苹果的safari浏览器,则打开窗口后关闭返回原网页执行支付唤醒
          var w_obj = iphone_open_w_id;
          w_obj.location = 'alipay://alipayclient/?'+url.ios;

          var t1 = window.setTimeout(function() {
              // 1秒钟之后执行了
              w_obj.close()
              window.clearTimeout(t1) // 去除定时器
            },1000)
        } else {
          if(/mqqbrowser/.test(navigator.userAgent.toLowerCase())) {
            // 苹果端的QQ浏览器
            aliwap_url = 'alipay://alipayclient/?'+url.android
          } else {
            // 非苹果端的浏览器,即安卓浏览器
            aliwap_url = 'alipays://platformapi/startApp?appId=20000125&orderSuffix=' + url.android +'#Intent;scheme=alipays;package=com.eg.android.AlipayGphone;end';
          }
        }

注:平板是走手机端的逻辑,也就是可以通过 APP协议进行 支付宝唤醒支付

 

iOS系统是目前市场上最为流行的智能手机操作系统之一,而H5技术则是网页设计与开发领域的一大热门技术。在很多情况下,我们需要H5页面能够实现唤醒app的功能,这样不仅可以增加用户体验,还能提高应用的活跃度和转化率。下面我们来看一下如何在iOS平台上实现H5唤醒App的功能: 1.使用 universal link:Universal Links 是苹果提供的一种标准的网络链接技术。在使用这种技术时,需要在项目中配置一个 JSON 文件,并在 app 中运用 Associated Domains 的配置与这个 JSON 文件联系,最后在 H5 页面中添加相应的链接。当用户点击链接时,iOS 系统就会判断该链接是否关联到了 APP 上,如果是,就会自动将用户跳转到 APP 中。 2.使用 scheme:Scheme 系统是 iOS 中常用的一种协议,用于在应用程序之间传递数据,或调用应用程序内部的某些功能。可以在APP项目中设置scheme,当手机浏览器在用户访问页面时,会根据链接协议中的scheme来唤醒APP,并且把数据传递到APP中。使用Scheme的方式相对来说比较简单,但是要注意的是,由于iOS9中的安全机制调整,仅能在应用内发起 scheme 调用。如果APP没有被安装,那么scheme调用是无效的。 3.使用IOS智能浏览器:安装一些智能浏览器,它们可以自动扫描网页上提供的一个二维码,并从中解析出应用商店的链接,并引导用户去下载应用,类似于国内的微信、手Q、支付宝等。 需要注意的是,无论使用哪种方式实现唤醒App的功能,都需要在APP中进行相应的设置和配置,以确保APP能够正常响应用户的调用。因此在进行开发时,需要综合考虑多个方面的因素,才能实现最优质的用户体验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值