Я создал приложение форм xamarin, и одно из требований заключается в следующем: пользователь должен иметь возможность нажать кнопку и создать геозону. Когда геозона создана, приложение постоянно проверяет, находится ли пользователь в геозоне. Это правда, мобильное приложение должно отображать уведомление sayinf: вы ввели геозону.
Я использую Shiny для реализации функции, основанной на этом уроке: "https://allancritchie.net/posts/shiny-geofencing".
Но проблема в том, что он ничего не делает. Я установил геозону в 50 метрах от моего дома, а радиус проверки - 200 метров, поэтому, когда я создаю приложение, через пару секунд / минут я должен получить уведомление, верно? Или мне нужно go сначала выйти из забора, а потом в? Как я могу решить эту проблему ...
мой код:
// shiny doesn't usually manage your viewmodels, so we'll do this for now
var geofences = ShinyHost.Resolve<IGeofenceManager>();
var notifications = ShinyHost.Resolve<INotificationManager>();
Register = new Command(async () =>
{
// this is really only required on iOS, but do it to be safe
var access = await notifications.RequestAccess();
if (access == AccessState.Available)
{
await geofences.StartMonitoring(new GeofenceRegion(
"CN Tower - Toronto, Canada",
new Position(52.079779, 4.337133),
Distance.FromMeters(200)
)
{
NotifyOnEntry = true,
NotifyOnExit = true,
SingleUse = false
});
}
});
public class GeofenceDelegate : IGeofenceDelegate
{
private readonly INotificationManager _notifications;
public GeofenceDelegate(INotificationManager notifications)
{
_notifications = notifications;
}
public async Task OnStatusChanged(GeofenceState newStatus, GeofenceRegion region)
{
if (newStatus == GeofenceState.Entered)
{
await GeofenceEntered(region);
}
else if (newStatus == GeofenceState.Exited)
{
await GeofenceLeft(region);
}
}
}
У меня точно такой же код, что и в руководстве, и геозона создается, когда я нажимаю кнопку, если я отлаживаю Это. Так что все выглядит хорошо для меня ..