Xamarin iOS应用程序中供应商和钥匙链访问的UIDevice.CurrentDevice.Identifier

Xamarin iOS应用程序中供应商和钥匙链访问的UIDevice.CurrentDevice.Identifier,ios,xamarin,keychain,Ios,Xamarin,Keychain,我们的旧应用程序是用Objective编写的。新应用程序是Xamarin应用程序。两个应用程序具有相同的捆绑包标识符 从旧应用升级到新应用时,我遇到了一些问题。 为了升级,我从appstore安装了旧的应用程序,然后在上面部署Xamarin Studio的新应用程序 当应用程序首次运行时,它访问供应商的UIDevice.CurrentDevice.IdentifierForVendor,并需要从应用程序的钥匙链读取一些数据。 在Xamarin应用程序中调用供应商的UIDevice.Current

我们的旧应用程序是用Objective编写的。新应用程序是Xamarin应用程序。两个应用程序具有相同的捆绑包标识符

从旧应用升级到新应用时,我遇到了一些问题。 为了升级,我从appstore安装了旧的应用程序,然后在上面部署Xamarin Studio的新应用程序

当应用程序首次运行时,它访问供应商的
UIDevice.CurrentDevice.IdentifierForVendor
,并需要从应用程序的钥匙链读取一些数据。 在Xamarin应用程序中调用供应商的
UIDevice.CurrentDevice.IdentifierForVendor
时,我得到的GUID与在旧ObjectiveC应用程序中得到的不同。 我也无法访问旧应用程序在钥匙链中存储的值。 这是我用来获取供应商标识的代码:

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 );
        }
```