Je réécris mon existants (swift) iOS thérapie physique app "Sur les Nerfs" de Xamarin.Les formulaires. C'est une app pour aider les personnes avec des lésions nerveuses (comme moi!) ne leur désensibilisation des exercices. Vous avez ces "tissus" (par exemple, une plume) où chaque tissu a un " x " secondes du compte à rebours. Une fois que le tissu de la minuterie atteint 0, un message s'affiche disant: "le temps est en place". L'utilisateur clique sur OK et la prochaine tissu commence son compte à rebours. Rincez et répétez l'opération pour tous les tissus dans la liste. Voici une vidéo montrant le flux de travail. Faites-moi confiance sur le UX dans la vidéo.
Voici mon exemple de code d'application, en démontrant ce comportement.
L' DoSomethingForNow
méthode (pardonnez ma stratégie de nommage) est la fonction de rappel de la NotificationService (voir la ligne 65 - pas assez DONC des points de rep pour le lien direct) qui est créé lorsque le compte à rebours commence, dans le cas où l'application obtient le fond.
L'appel spécifique qui ne fonctionne pas sur la Version en mode de l'Appareil à la ligne 115
Device.BeginInvokeOnMainThread(
async () => await ShowAlertAndWaitForUser(currentFabricCount));
L' async () => await ShowAlertAndWaitForUser(currentFabricCount))
fonctionne comme prévu dans la configuration Debug et Release sur le Simulateur iOS, et dans la configuration de Débogage sur l'appareil.
Toutefois, la boîte de message indiquant l'heure n'apparaît pas dans la Version de config sur le périphérique physique. Je ne peux pas comprendre pourquoi Device.BeginInvokeOnMainThread()
ne fonctionne pas dans la Version de config sur le périphérique. Ce qui se passe?
Remarque utilisez Device.StartTimer()
La raison pour laquelle je suis passé de Device.StartTimer()
à James FrenchPressTimer solution (voir jamesmontemagno/FrenchPressTimer) tôt, c'est parce que j'ai besoin d'un moyen d'annuler / stop / quel que soit un Device.StartTimer()
dans le cas où l'utilisateur a besoin pour mettre en pause ou arrêter le compte à rebours sur l'application.
L' Device.StartTimer()
code fonctionne très bien pour moi sur toutes les configurations sur les deux simulateur et l'appareil, heureusement quelqu'un m'a montré comment annuler un Appareil.StartTimer (merci!). Si vous voulez voir cette solution de travail, découvrez saraford/Appareil-StartTimer-Travail-Xamarin sur GitHub.
Ma question précise est pourquoi ne peut - Device.BeginInvokeOnMainThread()
afficher une boîte de message lorsqu'il est appelé à partir d'un rappel de notification dans la Version config sur un dispositif physique.
J'ai aussi essayé les différentes éditeur de liens combinaisons. Pas d'effet.