我们的旧应用程序是用ObjectiveC编写的。新的应用程序是一个Xamarin应用程序。两个应用程序都具有相同的包标识符。
从旧应用程序升级到新应用程序时遇到一些问题。 要升级,我从appstore安装旧应用程序,然后通过它从Xamarin Studio部署新应用程序。
当应用程序首次运行时,它会访问UIDevice.CurrentDevice.IdentifierForVendor
并需要从应用程序的钥匙串中读取一些数据。
在Xamarin应用程序中调用UIDevice.CurrentDevice.IdentifierForVendor
时,我获得的GUID与我在旧的ObjectiveC应用程序中获得的GUID不同。
我也无法访问钥匙串中旧应用程序存储的值。
这是我用来获取IdentifierForVendor的代码:
UIDevice.CurrentDevice.IdentifierForVendor.AsString()
这是我用来访问钥匙串的代码:
SecStatusCode code;
// Query the record.
SecRecord queryRec = new SecRecord ( SecKind.GenericPassword ) { Service = serviceId, Account = username, Synchronizable = synchronizable };
queryRec = SecKeyChain.QueryAsRecord ( queryRec, out code );
// If found, try to get password.
if ( code == SecStatusCode.Success && queryRec != null && queryRec.Generic != null )
{
// Decode from UTF8.
return NSString.FromData ( queryRec.Generic, NSStringEncoding.UTF8 );
}
```