c# - 如何在 Xamarin.iOS 中使用数据保护?
问题描述
我正在尝试遵循此 Apple 文档来使用数据保护。但是,鉴于它在 Swift 中,我似乎无法将其翻译为 C#/Xamarin。
需要明确的是,我不需要整个代码,当然,只需要从哪里开始。特别是这一行:
try data.write(to: fileURL, options: .completeFileProtection)
我尝试了几种将其翻译成 C# 的选项,但没有奏效。
解决方案
有关数据保护的官方 Apple 文档可在此处获得。
正如 Oleg 在链接中指出的那样,我将在此处对其进行总结,以防他们关闭 Xamarin 论坛:
- 首先,您必须为您的 App ID 启用数据保护并更新您的配置文件。
- 将您的 iOS 密码锁定设置为“立即”要求密码,然后通过启动您的应用程序然后锁定设备来测试它。
public static void SetFileProtection(string filePath)
{
NSMutableDictionary dict = new NSMutableDictionary ();
var protection = new NSString("NSFileProtectionCompleteUnlessOpen");
dict.Add((new NSString("NSFileProtectionKey") as NSObject), (protection as NSObject));
NSError error;
NSFileManager.DefaultManager.SetAttributes(dict, filePath, out error);
if (error != null)
System.Console.WriteLine("SetFileProtection Error: " + error.Description);
}
您可以使用iExplorer测试功能。您将看到除非设备受信任,否则无法访问数据。借助官方文档中的数据保护等级选择适当的保护级别:
(NSFileProtectionComplete):类密钥受用户密码和设备 UID 派生的密钥保护。用户锁定设备后不久(10 秒,如果 Require Password 设置为 Immediately),解密的类密钥将被丢弃,使此类中的所有数据都无法访问,直到用户再次输入密码或使用 Touch ID 或 Face 解锁设备ID。
推荐阅读
- python - 附加到 Django 中的 request.sessions[list]
- java - 带有spring boot postgresql的GraalVM native-image将无法构建
- sql - 在SQL LEFT JOIN中使用ISNULL来检查结果是否为null,如果是则使用另一个值加入
- node.js - 带有自定义快递服务器的 nextjs 不会在生产中重定向 url
- javascript - Angular 谷歌地图自定义 HTML infoWindow
- php - ImageColorAt 不从 ImageCreateTrueColor 返回 alpha
- html - 为什么我的 CSS 网格区域的行为不像它应该的那样?
- asp.net-mvc - 如何在 Asp.Net MVC 生成的 cookie 中设置 sameSite=None?
- ios - 如何快速制作形状
- plsql - 重塑plsql中的数据