从最终用户隐藏URL方案的最佳做法

时间:2016-05-07 01:30:43

标签: ios objective-c cocoa-touch url-scheme

我想在应用中发送短信,这些短信是在同一个应用中打开其他视图的链接。就像通知文本消息,其中包含指向应用程序中其他视图的链接。因此,最好的方法是插入URL方案myAppName://someQuery?blablabla=123,然后依次触发openURL命令并打开该特定视图。

从最终用户隐藏网址方案的最佳做法是什么?它看起来很丑陋,也不想创建最终用户可以将值传递给url方案的可能性。

我的选择:

  1. 使用网络链接,打开Safari,然后返回应用程序。这需要时间。
  2. 使用html标签<a href=myAppName://someQuery?blablabla=123">Test</a>,但这会影响性能,因为我需要继续将属性文本分配给textView,这非常慢,并且有错误。
  3. 到目前为止,我有最好的选择2.只是想知道是否有其他好的想法......

    感谢您的帮助

2 个答案:

答案 0 :(得分:4)

您可以加密参数字符串,然后将其作为消息发送

  

加密的网址格式:

myAppName://encrypted_query

现在,当您在应用中接听电话时,应该从网址中提取encryptedt_data并在实际执行任何操作之前对其进行解密。

  

解密后的网址格式:

myAppName://someQuery?blablabla=123

我相信这是完成这项工作的最佳和最简单的方法。有关加密/解密的最佳做法,请检查此AES Encryption for an NSString on the iPhonethis

只要您不关心安全性,就可以始终使用缩小的加密字符串来缩小URL。该选项在Github库中给出。

答案 1 :(得分:1)

  

因此,最好的方法是插入URL方案myAppName://someQuery?blablabla=123,然后依次触发openURL命令并打开该特定视图。

我假设您正在使用网络视图,这就是您希望以这种方式处理事情的原因。但是你知道新WKScriptMessageHandler类中的WKWebView协议吗?

如果您在网络上嵌入了onclick='window.webkit.messageHandlers.yourHandlerName.postMessage(yourUserData)',并通过WKUserContentController的{​​{1}}设置了一个或多个脚本消息处理程序,则会调用他们的WKWebView方法-userContentController:didReceiveScriptMessage:作为邮件正文。