我正在尝试从Swift WKWebView打开UPI应用程序。
我已经尝试过使用添加openURL到其他应用程序,如果它不是http或https。
这是我遵循的策略。AppDelegate类
import Foundation
import UIKit
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
return true
}
}
下面是Webview导航委托函数
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
currentWebView = webView
guard let url = navigationAction.request.url else {
decisionHandler(.allow)
return
}
print("NavAction URL: \(url)")
if navigationAction.targetFrame == nil {
// Open in the same tab if the target frame is nil (new tab)
print("NavAction 1")
currentWebView?.load(navigationAction.request)
decisionHandler(.cancel)
return
}
else if let url = navigationAction.request.url,
!url.absoluteString.hasPrefix("http://"),
!url.absoluteString.hasPrefix("https://"),
UIApplication.shared.canOpenURL(url) {
// Have UIApplication handle the url (sms:, tel:, mailto:, ...)
UIApplication.shared.open(url, options: [:], completionHandler: nil)
// Cancel the request (handled by UIApplication).
decisionHandler(.cancel)
}
decisionHandler(.allow)
}
我如何才能打开UPI应用程序的方式Safari打开他们的对话框说打开在“GPay”。
1条答案
按热度按时间8hhllhi21#
您可以使用UPI应用程序注册的自定义URL方案。UPI应用程序通常具有URL方案,您可以使用这些方案发起付款请求。你可以这样做:
let upiURLString =“upi://pay?pa=收件人@upi&pn=收件人姓名&mc=1234&tid=123456&tr=12345678&am=100&cu=INR”
以下是每个参数的含义:
pa:收款人VPA(虚拟付款地址)pn:收款人姓名mc:商户代码(如适用)tid:交易ID tr:交易参考ID am:金额cu:货币代码(例如,印度卢比的INR)
如果let upiAppURL = URL(字符串:upiURLString){ if UIApplication.shared.canOpenURL(upiAppURL){UIApplication.shared.open(upiAppURL,options:[:],完成时间:nil)} else { //处理未安装UPI应用程序的情况//您可能希望提供回退选项或通知用户} }