2017-09-27 2 views
0

Aujourd'hui, je peux lancer une notification locale lorsque le mobile entre dans la région en utilisant didDetermineState comme le code ci-dessous, même si l'application ne fonctionne pas du tout.Comment ouvrir une application à l'intérieur de didDetermineState Méthode

if (state == CLRegionState.inside){ 

     let date = Date() 
     let calendar = Calendar.current 
     let hour = calendar.component(.hour, from: date) 
     let minutes = calendar.component(.minute, from: date) 


       let content = UNMutableNotificationContent() 
       content.title = "Sonda" 
       content.subtitle = "Entrada" 
       content.body = "Hora: " + String(hour) + ":" + String(minutes) 
       content.badge = 1 
       content.sound = .default() 
       let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 2, repeats: false) 
       let requestIdentifier = "reqIdentifier" 
       let request = UNNotificationRequest(identifier: requestIdentifier, content: content, trigger: trigger) 
       UNUserNotificationCenter.current().add(request, withCompletionHandler: {error in 
        //handle error 
       }).... 

Est-il possible de lancer l'application elle-même dans la même méthode sans intervention de l'utilisateur?

Merci à l'avance,

Filipe

+0

Qu'entendez-vous par lancement? Comme dans ouvrir l'application sur l'écran ou exécuter du code? – matiastofteby

+0

J'ai besoin d'ouvrir l'application pour commencer à aligner les balises et écrire des données au backend..monitoring l'activité –

+0

Eh bien, il ne semble pas que vous devez ouvrir l'application pour commencer la gamme? Tant que vous avez la capacité d'agir avec des appareils BLE en arrière-plan, vous seriez en mesure de le faire. – matiastofteby

Répondre

0

Désolé, mais non, vous ne pouvez pas lancer un iOS au premier plan d'un programme. La conception d'iOS interdit cela, car il faut toujours qu'un utilisateur fasse un geste pour permettre à une application de cône au premier plan. Le plus proche que vous pouvez venir est d'envoyer une notification locale comme vous l'avez fait. L'utilisation de la notification locale est la manière la plus simple et la plus conviviale d'obtenir ce geste utilisateur.

+0

Que faire si je veux fermer de l'application? C'est interdit aussi? J'ai vu des threads qui disent que vous ne serez pas en mesure de mettre à jour à appstore si vous utilisez exit (0) –

+0

Le cadre iOS est conçu de sorte que la fermeture des applications par programmation est inutile. Le système d'exploitation fermera l'application lorsque la mémoire est faible. Il y a quelques inconvénients de cette conception, mais cela ne vaut pas la peine de se battre parce que vous ne pouvez rien y faire. Le mieux serait de désallouer toutes les ressources ou tous les threads lorsque vous avez fini d'exécuter votre application, et de la concevoir afin qu'elle puisse être recréée si elle est ramenée au premier plan en tapant sur l'icône d'un lanceur ou une notification. – davidgyoung