J'essaie de faire fonctionner mon application dans Xcode 8.0 et je rencontre une erreur. Je sais que ce code fonctionnait bien dans les versions précédentes de swift, mais je suppose que le code pour cela est changé dans la nouvelle version. Voici le code que j'essaye d'exécuter:
let settings = UIUserNotificationSettings(forTypes: [.Sound, .Alert, .Badge], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
UIApplication.shared().registerForRemoteNotifications()
L'erreur que j'obtiens est "Les étiquettes d'argument '(forTypes :, categories :)' ne correspondent à aucune surcharge disponible"
Existe-t-il une commande différente que je pourrais essayer de faire fonctionner?
ios
push-notification
swift3
ios10
unusernotificationcenter
Asher Hawthorne
la source
la source
Réponses:
Demander l'autorisation de l'utilisateur
Obtention du jeton d'appareil
En cas d'erreur
Au cas où vous auriez besoin de connaître les autorisations accordées
la source
la source
application.isRegisteredForRemoteNotifications()
pour voir si elle est accordé et utilisez une autre méthode de délégué au cas où vous auriez une erreur. Droite? Rien d'autre?application.registerForRemoteNotifications()
après soncenter.requestAuthorization
Ensuite, allez dans l'éditeur de projet de votre cible et dans l'onglet Général, recherchez la section Frameworks et bibliothèques liés.
Cliquez sur + et sélectionnez UserNotifications.framework:
Utiliser les méthodes de délégué de notification
Pour recevoir une notification push
Vérifiez le lien ci-dessous pour plus de méthodes de délégué de notification
la source
J'ai eu des problèmes avec les réponses ici en convertissant l'objet de données deviceToken en une chaîne à envoyer à mon serveur avec la version bêta actuelle de Xcode 8. Surtout celui qui utilisait deviceToken.description comme dans 8.0b6 qui renverrait "32 octets" qui n'est pas très utile :)
C'est ce qui a fonctionné pour moi...
Créez une extension sur Data pour implémenter une méthode "hexString":
Et puis utilisez-le lorsque vous recevez le rappel de l'inscription aux notifications à distance:
la source
let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
Dans iOS10 au lieu de votre code, vous devez demander une autorisation de notification avec ce qui suit: (N'oubliez pas d'ajouter le
UserNotifications
Framework)En outre, le code correct pour vous est (à utiliser dans la
else
condition précédente, par exemple):Enfin, assurez-vous que
Push Notification
est activé soustarget
->Capabilities
->Push notification
. (allumez-leOn
)la source
Eh bien, ce travail pour moi. Premier dans AppDelegate
Ensuite:
Pour obtenir un devicetoken:
la source
Attention, vous devriez utiliser le fil de discussion principal pour cette action.
la source
Tout d'abord , écoutez l'état de notification de l'utilisateur, c'est-
registerForRemoteNotifications()
à- dire pour obtenir un jeton d'appareil APN;Deuxièmement , demandez une autorisation. Lorsqu'il est autorisé par l'utilisateur, deviceToken sera envoyé à l'auditeur, le
AppDelegate
;Troisièmement , signalez le jeton d'appareil à votre serveur.
la source
La réponse d' ast1 est très simple et utile. Cela fonctionne pour moi, merci beaucoup. Je veux juste le signaler ici, afin que les personnes qui ont besoin de cette réponse puissent la trouver facilement. Donc, voici mon code d'enregistrement de la notification locale et distante (push).
la source
Procédez simplement comme suit dans
didFinishWithLaunching:
:Rappelez-vous de l'instruction d'importation:
la source
registerForRemoteNotifications()
le gestionnaire d'achèvement derequestAuthorization()
. Vous voudrez peut-être même entourerregisterForRemoteNotifications()
d'uneif granted
déclaration:center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in if granted { UIApplication.shared.registerForRemoteNotifications() } }
Jetez un œil à ce code commenté:
Faites-moi savoir s'il y a un problème!
la source