Я пытаюсь заставить мое приложение работать в Xcode 8.0 , и у меня возникает ошибка. Я знаю, что этот код отлично работал в предыдущих версиях swift, но я предполагаю, что код для этого изменен в новой версии. Вот код, который я пытаюсь запустить:
let settings = UIUserNotificationSettings(forTypes: [.Sound, .Alert, .Badge], categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
UIApplication.shared().registerForRemoteNotifications()
Я получаю сообщение об ошибке «Ярлыки аргументов '(forTypes :, Categories :)' не соответствуют ни одной доступной перегрузке».
Есть ли другая команда, с помощью которой я мог бы попытаться заставить это работать?
ios
push-notification
swift3
ios10
unusernotificationcenter
Ашер Хоторн
источник
источник
Ответы:
Запросить разрешение пользователя
Получение токена устройства
В случае ошибки
В случае, если вам нужно знать предоставленные разрешения
источник
источник
application.isRegisteredForRemoteNotifications()
увидеть , если это предоставлено, и используйте другой метод делегата в случае ошибки. Правильно? Что-нибудь еще?application.registerForRemoteNotifications()
после того, как егоcenter.requestAuthorization
Затем перейдите в редактор проекта для своей цели и на вкладке «Общие» найдите раздел «Связанные платформы и библиотеки».
Нажмите + и выберите UserNotifications.framework:
Использовать методы делегата уведомления
Для получения push-уведомления
Проверьте ссылку ниже для получения дополнительных методов делегата уведомления
источник
У меня были проблемы с ответами здесь при преобразовании объекта данных deviceToken в строку для отправки на мой сервер с текущей бета-версией Xcode 8. Особенно тот, который использовал deviceToken.description, как в 8.0b6, который возвращал бы «32 байта», что не очень полезно :)
Вот что у меня сработало ...
Создайте расширение для Data для реализации метода hexString:
И затем используйте это, когда вы получите обратный вызов от регистрации для удаленных уведомлений:
источник
let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
В iOS10 вместо вашего кода вы должны запросить авторизацию для уведомления следующим образом: (Не забудьте добавить
UserNotifications
Framework)Кроме того, правильный код для вас (используйте
else
, например, в предыдущем условии):Наконец, убедитесь, что
Push Notification
он активирован подtarget
->Capabilities
->Push notification
. (установите егоOn
)источник
Хорошо это работает для меня. Сначала в AppDelegate
Затем:
Чтобы получить devicetoken:
источник
Внимание, вы должны использовать основной поток для этого действия.
источник
Во-первых , прослушайте статус уведомления пользователя, т.
registerForRemoteNotifications()
Е. Чтобы получить токен устройства APNs;Во-вторых , запросите авторизацию. После авторизации пользователем, deviceToken будет отправлен слушателю
AppDelegate
;В-третьих , сообщите токен устройства на свой сервер.
источник
Ответ от ast1 очень прост и полезен. У меня это работает, большое вам спасибо. Я просто хочу указать на это здесь, чтобы люди, которым нужен этот ответ, могли легко его найти. Итак, вот мой код для регистрации локальных и удаленных (push) уведомлений.
источник
Просто сделайте следующее
didFinishWithLaunching:
:Помните об операторе импорта:
источник
registerForRemoteNotifications()
обработчик завершенияrequestAuthorization()
. Вы даже можете окружитьregisterForRemoteNotifications()
егоif granted
заявлением:center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in if granted { UIApplication.shared.registerForRemoteNotifications() } }
Взгляните на этот закомментированный код:
Сообщите мне, если возникнут проблемы!
источник