ios - 如何将现有 iOS 应用程序升级到 Xamarin Forms 应用程序

标签 ios xamarin xamarin.forms keychain

目前,我有一个用 Swift 编写的 iOS 应用程序,它将被替换为 通过 Xamarin Forms 的新版本。我在访问旧版本时遇到问题 (Swift) 钥匙串(keychain),其中 ItemNotFound 是返回的唯一请求代码。 两个应用程序都使用相同的 bundle ID。

这是我正在使用的代码:

byte[] _LegacyGetKeychainItem<T>(string key)
{
    using (var record = ExistingRecordForKey(key))
    using (var match = SecKeyChain.QueryAsData(record, false, out var resultCode))
    {
        if (resultCode == SecStatusCode.Success)
        {
            return match.ToArray();
        }
    }

    throw new InvalidOperationException(string.Format("GetKeychainItem: data was null for key: {0}", key));
}

SecRecord ExistingRecordForKey(string key)
{
    return new SecRecord(SecKind.GenericPassword)
    {
        Service = SEC_SERVICE, // Same as Bundle ID
        Account = key
    };
}

最佳答案

检查 Entitlements.plist 是否有 Enable Keychain设置

<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>BUNDLE_ID</string>
    </array>
</dict>

如果它已经存在的话。检查项目的 iOS Bundle Signing(项目 => iOS Bundle Signing)。

您可能必须将“自定义权利”设置为“Entitlement.plist”,因为“自定义权利”的默认设置对于模拟器来说为空。看看thisthis答案。

enter image description here enter image description here

关于ios - 如何将现有 iOS 应用程序升级到 Xamarin Forms 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57680344/

相关文章:

ios - Sinch 视频不想在 iOS 上运行 (Swift)

android - 使用 wifi 验证智能手机(iOS、Android)

ios - 无法从 .plist 为我的模型 (NSObject) 加载我的所有对象

c# - Xamarin.iOS Firebase 未接收推送通知但接收 token

c# - 如何安全地重命名 Xamarin.Forms 中表示 SQLite 实体的类的属性?

php - PHP页面返回垃圾,而不是Objective-C中的返回字符串

ios - 如何在 xamarin.ios 中绑定(bind)后动态更改表高度

ios - 为 ScrollView 内的堆栈布局切换 IsVisible 不会在 Xamarin 表单 iOS 中正确更新

c# - NuGet 恢复问题 : Xamarin iOS CSharp Targets was not found

c# - ActivityIndi​​cator 没有进入正确的位置