Ich habe eine Prototyp-Anwendung, die Geofencing in AndroidStudio eingerichtet verwendet und erfolgreich im Android-Emulator testen konnte. Da ich die Anwendung auch als iOS verwenden muss, habe ich den Prototyp auf Xamarin/Visual Studio 2017 portiert, um sicherzustellen, dass er in dieser Umgebung funktioniert. So kann ich mich davor retten, die Kernlogik der App in Android und iOS codieren zu müssen. Allerdings kann ich die Geofences in der Xamarin-basierten App auf dem gleichen Emulator nicht auslösen. Hat jemand mit dieser Technologie in Xamarin gearbeitet? Gibt es spezielle Einstellungen, die für Xamarin geändert werden müssen, damit dies funktioniert?Testen von Xamarin Geofence-Prototyp im Emulator schlägt fehl
Antwort
Das Problem stammt wahrscheinlich aus dem Manifest. Wenn Sie in Xamarin einen Service (oder Intent-Service) erstellen, sollte dieser mit dem Attribut [Service]
markiert werden, anstatt ihn manuell in das Manifest einzufügen.
Sie auch auf Fehler überprüfen sollten, wenn die Absicht der Handhabung (falls Sie es nicht bereits tun):
[Service]
public class GeofenceTransitionsIntentService : IntentService, IEnableDatabaseLogger
{
public GeofenceTransitionsIntentService()
: base(nameof(GeofenceTransitionsIntentService)) { }
protected override void OnHandleIntent(Intent intent)
{
base.OnHandleIntent(intent);
this.Log().Info("Intent received");
var geofencingEvent = GeofencingEvent.FromIntent(intent);
if (geofencingEvent.HasError)
{
var errorMessage = GeofenceErrorMessages.GetErrorString(this, geofencingEvent.ErrorCode);
this.Log().Error(errorMessage);
return;
}
var geofenceTransition = geofencingEvent.GeofenceTransition;
var geofences = geofencingEvent.TriggeringGeofences;
var location = geofencingEvent.TriggeringLocation;
if (geofenceTransition == Geofence.GeofenceTransitionEnter)
{
foreach (var geofence in geofences)
this.Log().Info($"Entered {geofence.RequestId} at {location.Latitude}/{location.Longitude}");
// do something
}
else if (geofenceTransition == Geofence.GeofenceTransitionExit)
{
foreach (var geofence in geofences)
this.Log().Info($"Exited {geofence.RequestId} at {location.Latitude}/{location.Longitude}");
// do something
}
else
{
this.Log().Error($"Geofence transition invalid type: {geofenceTransition}");
}
}
}
Hier ist eine Demo (in Betrieb) Projekt, das ich vor kurzem tat https://github.com/xleon/geofencing-playground Sie
Danke für den POC, das hat mir zumindest geholfen zu isolieren, dass etwas mit dem Emulator und meiner Lösung nicht stimmt. Ihre Lösung funktionierte nicht auf meinem Emulator, aber es funktionierte auf einem Gerät, das ich bisher nicht ausführen konnte. Ich werde deinen Code analysieren, um zu sehen, wie es anders ist. Hoffentlich kann ich in der Zwischenzeit herausfinden, was mit meinen Emulatoren nicht stimmt. – tanzencoder
Mein POC funktionierte nicht im Emulator, bis ich den Einstellungsortmodus auf Hohe Genauigkeit geändert habe. – xleon
Verwenden Sie den Android Emulator oder den Visual Studio Emulator für Android? – tanzencoder
- 1. Xamarin IOS App schlägt fehl
- 2. Xamarin Android Installation schlägt fehl
- 3. Xamarin iOS Linker schlägt auf System.Net.Http.Primitives.dll fehl
- 4. Testen von NightmareJS Code mit Mocha schlägt fehl
- 5. Xamarin Formulare HttpClient GetAsync schlägt nur in iOS fehl
- 6. AJAX-Anfrage von Phonegap Android schlägt fehl
- 7. JNI-Aufruf schlägt im Treiber-Callback fehl
- 8. Postbote schlägt fehl Json von asmx Service
- 9. Xamarin Build schlägt bei aapt fehl (Attribut *** bereits definiert)
- 10. Kompilieren von Produktionseffekten schlägt fehl
- 11. Double.Parse schlägt im deutschen Gebietsschema fehl
- 12. User.GetUserId() schlägt fehl im Konstruktor des Controllers
- 13. R win-Builder schlägt im Hintergrund fehl
- 14. Polygon-Polygon-Schnittpunkt schlägt im Spezialfall fehl
- 15. findobj schlägt im Timer-Callback fehl
- 16. Scrapy Paginierung schlägt fehl
- 17. Kotlin Klassengleichheit schlägt fehl
- 18. Installieren von cPickle schlägt fehl
- 19. Installation von npm schlägt fehl
- 20. Neustart von NGINX schlägt fehl
- 21. Drucken von VIP schlägt fehl
- 22. C-Wortzahl-Programm schlägt beim Testen auf Leerzeichen fehl
- 23. Warum schlägt dieser Komponententest beim Testen der DateTime-Gleichheit fehl?
- 24. Emulator zum Testen APK
- 25. Sparklyr copy_to schlägt fehl
- 26. Verwendung von XMLHttpRequest im Dashboard-Widget schlägt fehl
- 27. Verwendung von temporären Tabellen im SSIS-Fluss schlägt fehl
- 28. Meteor.loginWithFacebook schlägt fehl
- 29. Winkelprüfung Jasmine schlägt fehl
- 30. Benutzerdefiniert getEntityNameSelectList() schlägt fehl
Did ein echtes Gerät ausprobieren? funktioniert es? Nur um Code-Probleme zu verwerfen ... – xleon
Im Emulator können Sie versuchen mit Einstellungen> Ort> Modus> Hohe Genauigkeit – xleon
Ich arbeite daran, es auf einem echten Gerät zu testen, nur um sicherzustellen, dass. Im Emulator habe ich den Modus auf High Accuracy gesetzt und es hat die Ergebnisse nicht verändert. – tanzencoder