【问题标题】:Best practice to hide URL scheme from end users向最终用户隐藏 URL 方案的最佳实践
【发布时间】:2016-09-02 04:29:39
【问题描述】:

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

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

我的选择:

  1. 使用网络链接,打开 Safari,然后返回应用程序。这需要时间。
  2. 使用 html 标记 <a href=myAppName://someQuery?blablabla=123">Test</a>,但这会影响性能,因为我需要继续将属性文本分配给 textView,而且速度非常慢,而且有问题。

到目前为止,我有最好的选择 2。只是想知道是否还有其他好主意......

感谢您的帮助

【问题讨论】:

  • 听起来你在你的应用程序中嵌入了一个网络视图。在该视图中是 HTML,其中包含应用程序可以理解和响应的链接。就像一个“转到用户个人资料”链接,它将导致应用程序打开用户个人资料屏幕。由于用户看不到原始 HTML,为什么需要隐藏链接?另外,我不明白您在选项 2 中在做什么。
  • 最佳实践问题并不适合 Stack Overflow。
  • 我不能说我明白了你的问题。您究竟是如何使用这些 URL 的?他们来自哪里?您如何将它们呈现给用户?
  • "那超级慢,而且有问题。"显示一些代码。在一些测试应用程序中,我正在构建非常大的属性文本(+5k 个字符),但我没有看到很大的性能影响。
  • 您确实有不同的加密和解密方案,如 AES、SHA、MDM,您可以为您的预期功能实施或使用任何方案。会像魅力一样工作。!

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


【解决方案1】:

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

加密 URL 表单:

myAppName://encrypted_query

现在,当您在应用程序中接到电话时,您应该从 URL 中获取 encryptedt_data 并在实际执行任何操作之前对其进行解密。

解密的网址格式:

myAppName://someQuery?blablabla=123

在我看来,这是完成这项工作的最佳和最简单的方法。对于加密/解密最佳实践,请查看 AES Encryption for an NSString on the iPhonethis

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

【讨论】:

  • 这没问题,但不是我正在寻找的解决方案
【解决方案2】:

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

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

如果你在 web 端嵌入了onclick='window.webkit.messageHandlers.yourHandlerName.postMessage(yourUserData)',并通过你的WKWebViewWKUserContentController 设置一个或多个脚本消息处理程序,它们的-userContentController:didReceiveScriptMessage: 方法将会以yourUserData 作为消息体被调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2011-08-18
    相关资源
    最近更新 更多