在我的iOS
应用程序中,我正在生成一个二维码,其中的基本功能只是将用户移动到应用程序的某个功能中。
我想在同一个二维码中包含一个深度链接URL。
用例是一个拥有该应用程序的人向另一个人显示二维码。那个人会打开他们的本地相机应用程序或选择的二维码扫描仪&它将获取此URL并导航到Safari/App Store。
以下是我如何创建我的二维码:
func generateQRCode(from string: String) -> UIImage? {
var jsonDict = [String: Any]()
let url = "https://mydeeplinkurlhere"
jsonDict.updateValue(url, forKey: "url")
jsonDict.updateValue(string, forKey: "xyz")
guard let jsonData = try? JSONSerialization.data(withJSONObject: jsonDict, options: [.prettyPrinted]) else {
return nil
}
guard let qrFilter = CIFilter(name: "CIQRCodeGenerator") else { return nil }
// Input the data
qrFilter.setValue(jsonData, forKey: "inputMessage")
// Get the output image
guard let qrImage = qrFilter.outputImage else { return nil}
// Scale the image
let transform = CGAffineTransform(scaleX: 12, y: 12)
let scaledQrImage = qrImage.transformed(by: transform)
// Do some processing to get the UIImage
let context = CIContext()
guard let cgImage = context.createCGImage(scaledQrImage, from: scaledQrImage.extent) else { return nil }
let processedImage = UIImage(cgImage: cgImage)
return processedImage
}
更新:
上面的代码使我更接近我想要的结果。
如果在应用程序中扫描二维码并使用我需要的东西,我可以将其拆分。
我现在的问题是:
如果用户使用他们的相机应用程序进行扫描,它会吐出JSON是什么
所以他们会看到这两个键值对。我不需要他们看到所有这些。在这种情况下,我只需要他们查看URL和/或自定义消息。
那个部分可以编辑吗?意思是,扫描二维码时显示什么?
或者,与看到通知相比,网站可以自动打开吗?
您可以在qr码中存储任何类型的对象,在您的情况下,您可以通过字典或数组类型在qr代码中发送多个信息,这里是代码:
func generateQRCode(from dictionary: [String: String]) -> UIImage? {
guard let qrFilter = CIFilter(name: "CIQRCodeGenerator") else { return nil }
guard let data = try? NSKeyedArchiver.archivedData(withRootObject: dictionary, requiringSecureCoding: false) else { return nil }
qrFilter.setValue(data, forKey: "inputMessage")
guard let qrImage = qrFilter.outputImage else { return nil}
let transform = CGAffineTransform(scaleX: 10, y: 10)
let scaledQrImage = qrImage.transformed(by: transform)
let context = CIContext()
guard let cgImage = context.createCGImage(scaledQrImage, from: scaledQrImage.extent) else { return nil }
let processedImage = UIImage(cgImage: cgImage)
return processedImage
}
这是你的模型,你如何称呼这种方法:
let dictionary: [String: String] = [
"message" : "some message string here",
"link" : "https://google.com"
]
YOUR_IMAGE_VIEW.image = generateQRCode(from: dictionary)
您可以完全自由地更改数据模型,但扫描二维码是另一回事,请查看:https://www.hackingwithswift.com/example-code/media/how-to-scan-a-qr-code
我希望这会有用,快乐编码🍻