iOS Fetch en arrière-plan ne fonctionne Pas, Même Si Correct Mode d'arrière-plan Configuré
Mon application a fond modes activé avec Fetch en arrière-plan vérifié et j'ai validé le plist intègre le mode de lecture.
J'ai également configuré l'intervalle comme suit:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum);
return true;
}
Et j'ai ajouté le gestionnaire comme suit:
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
//Get some new data here
completionHandler(UIBackgroundFetchResult.NewData);
}
J'ai essayé d'aller au Debug->Simuler Fetch en arrière-plan, mais peu importe ce qu'elle ne pénètre jamais dans le performFetchWithCompletionHandler
. J'ai aussi essayé d'exécuter l'application en vertu d'un régime qui a le "Lancement en raison d'un contexte d'extraction de l'événement" option cochée. Sous ce régime simplement lance l'application comme d'habitude dans le simulateur avec aucun appel à performFetchWithCompletionHandler
.
Des idées?
Merci!
EDIT: Cela semble affecter la version de mon application en tant que bien de sorte qu'il peut ne pas être isolé dans le simulateur. Je suis en cours d'exécution Swift 1.2.
EDIT 2: Mon rapport de bug vient juste d'être fermé parce que c'est un doublon d'un autre rapport de bug décrivant le même problème. Il n'y a toujours pas de données confirmant la question est isolé au simulateur.
EDIT 3: Aucune mention de la résolution du problème de Xcode 6.4 Bêta 2 notes de version. 🙁
- Xcode est juste cassé.
- Entendez-vous pour affirmer que le problème est isolé à Xcode et non un problème dans les versions release? Ou êtes-vous juste de faire une déclaration générale que Xcode est... cassé. 🙂
- Juste bellyaching. Actuellement, je suis en train de tester, de Fetch arrière-plan dans une version de débogage sur un périphérique. Ca fais
println("Background Fetch"); completionHandler(UIBackgroundFetchResult.NewData)
. Jusqu'à présent, je n'ai pas vu l'état de mon appareil journal. - Je viens de confirmé, vous pouvez tester fetch en arrière-plan avec une version de débogage sur un périphérique, en modifiant le Schéma, sélectionnez Exécuter, en sélectionnant des Options, et la vérification de la "Lancement en raison de fetch en arrière-plan de l'événement"
- Je viens de mettre cette info dans une réponse afin que je puisse ajouter un visuel. J'espère que ça va aider quelqu'un là-bas.
- Ok. Bonne solution de contournement. Espérons qu'apple va corriger cela rapidement. Merci!
Vous devez vous connecter pour publier un commentaire.
Voici le seul moyen que j'ai trouvé pour tester fetch en arrière-plan.
Prendre un coup d'oeil sur la note de version de XCode: https://developer.apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html
"Xcode commande de menu Simulateur de Fetch arrière-plan ne fonctionne pas.
Utiliser la commande de menu dans le Simulateur iOS au lieu de cela. (20145602)"
Vous pouvez créer votre propre fond d'extraction de notification push à votre appareil via Houston
sudo gem install houston
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
pour habitude de notification push:
apn push "<your_device_token>" -c /path/to/apple_push_notification.pem -m "Hello from the command line!"
de fond pour aller chercher de notification push:
apn push "<your_device_token>" -c /path/to/apple_push_notification.pem -n
Plus d'options pour
apn
application:Cette méthode est appelée.
}
vous avez oublié d'écrire @échapper après completionHandler
Dans Xcode 8.3.2 ce problème n'existe pas. Debug->Simuler Fetch en arrière-plan fait son travail. Il fonctionne même sur un simulateur.