6

我计划为 iOS 开发一个应用程序,并希望使用 HTML5、CSS 和 Javascript。最终的应用程序应该使用 Xcode 和UIWebView.

我可以在最终应用中隐藏或保护我的 html 文件吗?我必须将文件放在 Xcode 中名为“Supporting Files”的文件夹中。所以大家购买app后可以通过解压.ipa文件来查看纯文件吧?

4

3 回答 3

9

有很多方法可以保护您的数据,具体取决于您希望保护的程度。对于仅针对临时黑客的最小保护,您可以使用字符串混淆算法对 HTML 内容进行混淆和去混淆,如NSStrings. 这是一个这样做的例子。我没有使用那个特定的代码,但我也不是真的推荐混淆作为一种技术,除非数据真的不是很敏感。

更好的解决方案是加密HTML 内容,尽管这需要更多工作,并且可能涉及一些导出控制问题,具体取决于您所在的位置以及您分发应用程序的位置。

对于加密,您有很多选择。

1) 这是一个开源实现,它提供了类似NSUserDefaults. 不过,我在该代码中看不到等效项registerDefaults:,因此您的应用程序一次运行时,您可能必须从网络下载内容。但是,您可以将其加密并存储PDKeychainBindings为字符串值。在随后的运行中,您可以像这样提取存储的 HTML “文件”

NSString* webPageContent = 
    [[PDKeychainBindings sharedKeychainBindings] valueForKey: @"index.html"];

2)这是另一个提供 AES 加密包装器的开源项目。您将在发布应用程序之前编写一些非生产代码,将 HTML 内容加密为捆绑资源的加密数据文件。当您的应用程序运行时,它会打开文件并将它们解密为NSString可以提供给您的对象UIWebViewvia loadHTMLString: baseURL:

3)最后,这是另一个使用底层CommonCrypto API 保护捆绑资源的示例。此示例使用自定义构建步骤来自动加密特定文件夹中的资源,如果受保护的 HTML 内容会经常更改,这将为您节省一些时间。

于 2012-06-15T02:40:15.517 回答
1

您可以加密文件并在运行时解密它们,或者您不能将它们包含在您的包中,并有一个编译时脚本来读取它们并将它们转换为您的应用程序中的编码数据,您可以使用以下方法将其加载到您的 UIWebView 中:

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL
于 2012-06-14T22:02:26.320 回答
-4

您也可以在代码中创建所有 HTML 等,然后使用UIWebView's

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL

手动将每个 HTML 字符串加载为纯文本。但是,我建议你不要这样做。如果有人真的想从你编译的源代码中分离出每个字符串,这对他来说是可能的(除非你真的做要求很高的事情)。

大多数用户根本不关心 ipa 文件中的内容。如果你能忍受 < 1% 的人检查它,不要太担心这个话题。

另一个方面也是可能的(即使这不是一个好主意):你可以将你的 UIWebView 指向一个只有你和你的应用知道的秘密网站。这是绝对不可取的。

于 2012-06-14T21:58:47.760 回答