我有一个更怀疑APNS
。 也就是说,当应用程序首次启动该应用程序会要求苹果推送通知权限,如果用户接受了,他们可以接收通知。 如果用户取消他们无法收到任何通知。 我是清楚的?
现在我的疑问是,
在第一次如果用户取消从应用程序推送通知服务(被点击Cancel
按钮),如果他们想收到苹果推送通知,可以再次启用苹果推送通知从应用程序的特定用户几天后再次。
如果用户接受苹果推送通知服务第一,过了些日子,如果他们不希望收到通知,可以禁用APNS
在我们的应用程序? 我希望你明白我的疑问。 任何一个可以请你澄清这个疑问?
这是可以做到在我们的iPhone应用程序,这些上述情况?
请帮我。 提前致谢。
不幸的是,你不能启用或禁用推送通知您的应用从应用程序代码。 该对话框,询问是否许可只显示一次。 通常情况下,其他应用程序显示指令给用户以通过进入设置 - >通知 - > AppName的启用/禁用推送通知。
您可以通过阅读你的应用程序的权限UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
然后执行逐位和操作不同类型,看看哪个被使能。 您也可以拨打unregisterForRemoteNotifications
禁用通知。 有一件事你不能做的就是打开通知,虽然可以将用户引导。
我的要求是启用和禁用pushnotificaton用UISwitch
.Inorder, 以便从按钮动作中的代码使用这种推送通知 。
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
序禁用
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
NSLog(@"UnRegistered for pushnotification");
1.从您的应用程序没有它只是出现在用户第一次打开应用后安装它..如果随后他决定让这他可以从设备设置中激活。
2.it可以从应用程序和设置来完成..如果你想从你的应用程序禁用它,你可以在设备令牌(谁决定禁用推送通知)发送到您的服务器,它存储前。 “无通知列表”,当发送所以他们不会收到通知你忽略了这些标记的有效载荷。
3.我已经回答。
祝好运。
当你给首次你的iPhone的设备令牌与APN服务器注册权限,然后就可以收到推送通知。 稍后,您可以启用/从你的设备设置→通知→您的应用程序禁用。
您可以使用此代码来给予支持iOS中9
if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {
UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
if (types == UIUserNotificationTypeNone) {
// Do something
NSLog(@"");
}
} else {
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone) {
// Do something
NSLog(@"");
}
}
看,因为它是“未在iOS中支持8”如何更新使用enabledRemoteNotificationTypes代码?
务实,能够以使通过与注册和注销推送通知禁用推送通知。
启用推送通知:
if #available(iOS 10.0, *) {
// For iOS 10.0 +
let center = UNUserNotificationCenter.current()
center.delegate = self
center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
if error == nil{
DispatchQueue.main.async(execute: {
UIApplication.shared.registerForRemoteNotifications()
})
}
}
}else{
// Below iOS 10.0
let settings = UIUserNotificationSettings(types: [.sound, .alert, .badge], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)
//or
//UIApplication.shared.registerForRemoteNotifications()
}
委托方法
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// .. Receipt of device token
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
// handle error
}
关闭推送通知:
UIApplication.shared.unregisterForRemoteNotifications()