Как получить уникальный идентификатор устройства в Android и iOS с помощью C# в Xamarin Froms? Я использую Центр уведомлений Azure для отправки уведомлений. Я имею в виду этот блог. Но в Android я не могу найти соответствующие "Настройки"
обновите код, который вы сделали до сих пор, или прочтите это: stackoverflow.com/help/how-to-ask





Согласно опубликованному вами сообщению в блоге http://codeworks.it/blog/?p=260 и вашему краткому описанию проблемы, я пытаюсь ответить на ваш вопрос.
Для использования Android
Android.Provider.Settings.Secure.GetString(Android.App.Application.Context.ContentResolver, Android.Provider.Settings.Secure.AndroidId);
Для iOS см. Сообщение в блоге .. или, при желании, сохраните IdentifierForVendor, например. в вашем AppDelegate и верните это значение в своем классе IOSDevice (используя имя в блоге).
используйте UIDevice.CurrentDevice.IdentifierForVendor.ToString(), чтобы получить идентификатор устройства на iOS.
Для Android Forms.Context устарел, используйте вместо него Android.App.Application.Context.
Если у вас возникла ошибка с пользователем Android.Provider, это "global :: Android.Provider"
Я думал, что хранить идентификатор устройства пользователя в вашем приложении незаконно, я могу ошибаться в этом.
Будь осторожен! UIDevice.CurrentDevice.IdentifierForVendor.ToString () просто дает вам новый идентификатор. Когда вы удалите приложение или переустановите его, значение изменится. Так что это не совсем идентификатор устройства.
Подробно описывается здесь. Но на самом деле вам не нужно делать это и пытаться получить идентификатор от каждого устройства. Также работает простое создание Guid и сохранение на устройство. Xamarin имеет Заграждения для сохранения значения в устройстве.
Вы можете создать руководство и сохранить его в Prefecences, как я сделал ниже:
var deviceId = Preferences.Get("my_deviceId", string.Empty);
if (string.IsNullOrWhitespace(deviceId))
{
deviceId = System.Guid.NewGuid().ToString();
Preferences.Set("my_deviceId", deviceId);
}
Преимущество этого подхода заключается в том, что ваш Id, который вы генерируете, - это когда приложение передается на другое устройство, а у вас все еще тот же Id; но если вы удалите и переустановите снова, вы получите новый идентификатор. В других случаях, когда вы получаете идентификатор с устройства, он будет изменен при переносе приложения на другое устройство.
Для других случаев, когда вы хотите получить идентификатор с устройства:
iOS: IdentifierForDevice
public string Id => UIDevice.CurrentDevice.IdentifierForVendor.AsString();
Android: серийный номер, getSerial и 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 или 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;
}
}
+1! И помимо технических причин для изучения этого метода, я также иду по маршруту руководств приложений / устройств в безопасном хранилище, чтобы избежать каких-либо нормативных проблем с псевдонимизацией. Идентификатор физического устройства может считаться личными данными.
Что ты пробовал? Мы не предоставляем полных решений с попытками чего-либо.