Comment puis-je obtenir l'identifiant unique de l'appareil dans Android et iOS en utilisant c # dans Xamarin Froms? J'utilise Azure Notification Hub pour envoyer des notifications. Je fais référence à cela blog . Mais dans Android Je ne trouve pas les "Paramètres" associés
Selon votre blog publié http://codeworks.it/blog/?p=26 et votre courte description du problème, j'essaie de répondre à votre question.
Pour Android utilisez Android.Provider.Settings.Secure.GetString(Android.App.Application.Context.ContentResolver, Android.Provider.Settings.Secure.AndroidId);
Pour iOS, consultez votre article de blog .. ou enregistrez éventuellement le IdentifierForVendor
par exemple dans votre AppDelegate
et renvoyez cette valeur dans votre classe IOSDevice
(en utilisant le nom dans le blogpost). utilisez UIDevice.CurrentDevice.IdentifierForVendor.ToString()
pour obtenir l'ID de l'appareil sur iOS.
Il est décrit en détail ici . Mais en réalité, vous n'avez pas besoin de faire comme ça et d'essayer d'obtenir un identifiant de chaque appareil. La simple création d'un Guid et l'enregistrement sur l'appareil fonctionne également. Xamarin a Préférences pour conserver une valeur dans un appareil.
Vous pouvez créer un guide et l'enregistrer dans Prefecences comme je l'ai fait ci-dessous:
var deviceId = Preferences.Get("my_deviceId", string.Empty);
if(string.IsNullOrWhitespace(deviceId))
{
deviceId = System.Guid.NewGuid().ToString();
Preferences.Set("my_deviceId", deviceId);
}
L'avantage de cette approche est votre identifiant que vous avez généré lorsque l'application est transférée à un autre appareil que vous avez toujours le même identifiant; mais si vous désinstallez et réinstallez à nouveau, vous obtiendrez un nouvel identifiant. Pour les autres cas où vous obtenez un identifiant depuis un appareil, il sera modifié lorsque vous transférez votre application vers un autre appareil.
Pour les autres cas où vous souhaitez obtenir l'ID de l'appareil:
iOS: IdentifierForDevice
public string Id => UIDevice.CurrentDevice.IdentifierForVendor.AsString();
Android: série, getSerial et AndroidId
string id = string.Empty;
public string Id
{
get
{
if (!string.IsNullOrWhiteSpace(id))
return id;
id = Android.OS.Build.Serial;
if (string.IsNullOrWhiteSpace(id) || id == Build.Unknown || id == "0")
{
try
{
var context = Android.App.Application.Context;
id = Secure.GetString(context.ContentResolver, Secure.AndroidId);
}
catch (Exception ex)
{
Android.Util.Log.Warn("DeviceInfo", "Unable to get id: " + ex.ToString());
}
}
return id;
}
}
UWP: GetPackageSpecificToken ou GetSystemIdForPublisher
string id = null;
public string Id
{
get
{
if (id != null)
return id;
try
{
if (ApiInformation.IsTypePresent("Windows.System.Profile.SystemIdentification"))
{
var systemId = SystemIdentification.GetSystemIdForPublisher();
// Make sure this device can generate the IDs
if (systemId.Source != SystemIdentificationSource.None)
{
// The Id property has a buffer with the unique ID
var hardwareId = systemId.Id;
var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId);
var bytes = new byte[hardwareId.Length];
dataReader.ReadBytes(bytes);
id = Convert.ToBase64String(bytes);
}
}
if (id == null && ApiInformation.IsTypePresent("Windows.System.Profile.HardwareIdentification"))
{
var token = HardwareIdentification.GetPackageSpecificToken(null);
var hardwareId = token.Id;
var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId);
var bytes = new byte[hardwareId.Length];
dataReader.ReadBytes(bytes);
id = Convert.ToBase64String(bytes);
}
if (id == null)
{
id = "unsupported";
}
}
catch (Exception)
{
id = "unsupported";
}
return id;
}
}