如何将现有 iOS 应用升级到 Xamarin Forms 应用
Posted
技术标签:
【中文标题】如何将现有 iOS 应用升级到 Xamarin Forms 应用【英文标题】:How To Upgrade Existing iOS App to a Xamarin Forms App 【发布时间】:2019-12-31 23:16:02 【问题描述】:目前,我有一个用 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
;
【问题讨论】:
为什么这个标签是android?您是否删除了旧应用程序?或者您是否在旧应用程序之上安装了具有相同捆绑 ID 的新应用程序?您使用什么代码来访问钥匙串?您遇到了哪些错误或异常? 这里有一篇文章,也许有帮助。riptutorial.com/xamarin-ios/example/8337/using-keychain @Jason 我更新了问题,删除了 android 标签并添加了一些我的代码 @igorgue:你检查 Entitlements.plist 是否启用钥匙串? @CharithJ 是的,他们是一样的...... 【参考方案1】:检查 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”,因为“自定义权利”的默认设置对于模拟器来说是空的。看看this 和this 的答案。
【讨论】:
以上是关于如何将现有 iOS 应用升级到 Xamarin Forms 应用的主要内容,如果未能解决你的问题,请参考以下文章
在现有 Xamarin Forms 项目中添加新的 Android 项目[IOS]
无法在 Xamarin iOS 应用程序中将文本共享到电子邮件或短信中