按下按钮后如何提示用户授予推送通知权限?

2024-01-08

I read 如何控制何时在 iOS 中提示用户推送通知权限 https://stackoverflow.com/questions/30817069/how-to-control-when-to-prompt-user-for-push-notification-permissions-in-ios和类似的问题,但它们不是用 Swift 3 编写的。

我读过了在 Xcode 8/Swift 3.0 中注册推送通知? https://stackoverflow.com/questions/37956482/registering-for-push-notifications-in-xcode-8-swift-3-0/37956783五次。

我一遍又一遍地在模拟器中运行我的应用程序,但是第一次之后,应用程序从未提示用户授予推送通知权限。

我使用的代码来自在 Xcode 8/Swift 3.0 中注册推送通知? https://stackoverflow.com/questions/37956482/registering-for-push-notifications-in-xcode-8-swift-3-0/37956783并不断尝试不同的答案并将代码移动到不同的地方,以便仅在用户按下某个按钮后才会请求许可,而不是立即请求许可当应用程序启动时。

我是否必须注册 Apple ID 等才能获取推送通知代码work在模拟器中?


首先,您应该只提示您的用户once他们是否想要收到推送通知。因此,将其与按钮绑定并每次都尝试运行它是一个糟糕的用户体验决策。仅当按钮实际上执行更多需要启用推送通知的操作时,才将推送通知提示绑定到按钮。

要注册您的用户以接收推送通知,您应该使用UIApplication registerForRemoteNotifications https://developer.apple.com/reference/uikit/uiapplication/1623078-registerforremotenotifications方法。当此方法运行时,系统将提示您的用户是否要接收推送通知 - 但仅限一次!他们设置的设置将被视为最终设置,并且您的用户将not再次提示。如果他们想开始接收推送通知,则必须在应用程序的设置中进行更改。这是预期的行为,也是您应该这样做的方式。

如果您只想在用户按下按钮时提示用户,请删除对registerForRemoteNotifications从应用程序的启动代码中调用该方法,然后从与按钮绑定的操作中调用该方法。

如果您想重置推送通知权限用于测试目的, 苹果公司是这么说的: https://developer.apple.com/library/content/technotes/tn2265/_index.html#//apple_ref/doc/uid/DTS40010376-CH1-TNTAG42

在 iOS 上重置推送通知权限警报

当支持推送的应用程序第一次注册推送通知时,iOS 会询问用户是否希望接收该应用程序的通知。用户响应此警报后,除非设备恢复或应用程序已卸载至少一天,否则不会再次显示。

如果您想模拟应用程序的首次运行,您可以将应用程序卸载一天。您可以按照以下步骤实现后者,而无需等待一天:

  1. 从设备中删除您的应用程序。
  2. 完全关闭设备并重新打开。
  3. 前往“设置”>“常规”>“日期和时间”,然后将日期提前一天或更多。
  4. 再次完全关闭设备并重新打开。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按下按钮后如何提示用户授予推送通知权限? 的相关文章

  • iPhone 6模拟器,隐藏键盘问题

    iPhone 6 是否有一些新的方式 屏幕外 硬按钮 来重新打开隐藏的软键盘 我没有可以测试的物理设备 但我在 iPhone 6 模拟器中看到了一些在 iPad 或 iPhone 5 中看不到的新东西 iPhone 6 在横向视图中现在有一
  • if let 不解开 MKAnnotation 的 title 属性的可选值

    我想用 if let 语句解开可选值 我需要获得 MKAnnotation 的标题 func mapView mapView MKMapView didSelect view MKAnnotationView if let title vi
  • 处理ios设备方向

    我的 uiview 遇到问题 具体取决于设备方向 我遇到的主要问题是 UIDeviceOrientationFaceUp UIDeviceOrientationFaceDown 扰乱了我的视图 我只想支持纵向和横向 左右 因此如果设备改变方
  • 在 MAC OSX 上使用 CMake 生成 .bundle 文件

    我想生成一个可执行文件 bundle文件于Mac OSX 10 6 8 using CMake 我的 CMakeLists txt 文件如下所示 cmake minimum required VERSION 2 8 PROJECT TEST
  • iOS 联系人 如何通过电话号码获取联系人

    我只想通过电话号码获取联系人姓名 我尝试过这个 但速度太慢 CPU 速度超过 120 let contactStore CNContactStore let keys CNContactGivenNameKey CNContactFamil
  • 如何在应用程序打开或关闭的情况下在后台的特定日期时间快速运行任务

    我正在开发闹钟应用程序 我需要在特定时间安排闹钟 我使用scheduleLocalNotification用于安排警报 它工作正常 如我所愿 BUT在触发警报之前 我需要向 API 服务器发出请求 在该请求中 我想检查从 API 服务器返回
  • iOS7:我们可以在 Dynamic Type 中使用 Helvetica Neue 以外的字体吗?

    我们正在为 iOS7 设计一个应用程序 我们的设计师想要使用非默认字体 Avenir 但我不想失去动态类型功能 据我了解 动态类型只能与默认系统字体 Helvetica Neue 一起使用 是否可以使用其他字体 或者目前无法选择 据我了解
  • 当我编写 FirebaseApp.configure() 时,iOS 应用程序崩溃

    我有一个 ios 应用程序 可以正常登录和 Facebook 登录 今天我集成了 firebase 当我在应用程序委托中编写 FirebaseApp configure 时 我的应用程序崩溃了 并且此函数突出显示错误代码 在展开可选值时意外
  • 除了推送收据之外,关闭 FireBase 调配还会影响分析吗?

    The Firebase 云消息传递文档 https firebase google com docs cloud messaging ios client说他们混合了一些方法来获取推送通知令牌并记录接收推送通知 在里面FIR 分析文档 h
  • 在屏幕外绘制 uiview

    我想创建一个 UIView 它在调用 ViewDidLoad 时位于屏幕外 但一旦调用某个函数 我就会将其动画显示到屏幕上 用于对 UIView 进行动画处理的代码很好 但我似乎无法从屏幕外绘制 UIView 我已将故事板中的 UIView
  • 运行使用 XCode 7 部署的应用程序会崩溃

    我在 xcode 6 中开发应用程序 然后设备连接 我通过调试运行应用程序 在我可以断开设备与 Xcode 的连接并再次运行应用程序后 它正在运行 但今天开始出现一些问题 我使用 xcode 7 中的运行按钮运行应用程序 gt 应用程序正常
  • 在 iPhone 的日期选择器中插入空白值

    我有一个日期选择器 使用操作表显示 我想在日期选择器中插入一个空白值并将其设置为默认值 它应该仅根据用户选择而改变 这可能吗 如果是的话怎么办 感谢所有宝贵的建议 UIDatePicker 仅支持某些模式 并且不允许这种自定义 将空白或自定
  • 文件是为存档而构建的,这不是正在链接的体系结构(i386)

    我必须构建静态库 我想在我的 iPhone 和 iPad 应用程序中使用 当我尝试运行模拟器时 出现链接错误 我是 iOS 开发新手 请帮忙 ld 警告 忽略文件 Users valuelabs Desktop DruvaProject l
  • 如何在 iOS 中将 NSData 变量转换为 NSInteger 变量

    我有以下返回的 api 方法NSData 我在另一个视图控制器中调用了这个方法 如何转换NSData to NS整数 NSData getBusXMLAtStop NSString stopnumber NSMutableURLReques
  • 在 Xcode 4.2 中启用崩溃日志符号

    我使用的是 Xcode 4 2 我的崩溃日志没有被符号化 如何在 Xcode 4 2 中启用此功能 请浏览苹果的文档 http developer apple com library ios technotes tn2151 index h
  • coreplot 栏点击不工作

    我从 Github 下载了这段代码 https github com gilthonweapps CorePlotBarChartExample https github com gilthonweapps CorePlotBarChart
  • 检查url图片是否存在

    我正在尝试使用 if 语句检查 url 图像是否存在 然而 当尝试通过错误的图像网址测试它时 它会不断返回 致命错误 在解包可选值时意外发现 nil code var httpUrl subJson image url stringValu
  • 从 AppDelegate 启动 ViewController

    我有一个自定义 URL 方案 我想打开某个ViewController当我访问此 URL 时 这不是根 我已经能够做到这一点 剩下的就是推动这一点ViewController进入navigationController来自AppDelega
  • UICollectionview 单元格选择

    我制作了一个图像网格 为了显示其选择 我在选择时为图像绘制了边框 但问题是 当我选择顶部的一些图像并向下滚动图像网格时 底部的其他一些图像似乎也被选择了 下面是我的代码片段 UINib cellNib UINib nibWithNibNam
  • Xcode 调试器显示错误的变量值

    我之前问过类似的问题here https stackoverflow com q 53092448 1187415 这个版本有更简单的例子 更新摘要 Xcode 在调试器变量部分中为每个字符串显示 FAIL Swift print 语句显示

随机推荐

  • 将数据从 Microsoft SQL Server 读取到 R 中

    是否可以从 R 接口读取 MS SQL Server 中存储的数据 如果是的话 如果有人能告诉我如何做到这一点 我也会很感激 尝试过RODBC已经打包了吗 http cran r project org web packages RODBC
  • MVC 授权属性拒绝

    我正在使用Authorize 属性来保护我的控制器 操作 并且只想向未经身份验证的用户显示登录操作 或者换句话说 拒绝对经过身份验证的用户的访问 我在网上找不到任何涉及拒绝权限或允许负面权限 即 LoggedIn 的内容 有人可以指出我正确
  • 让 ORMLite 对结构使用正确的序列化

    tl dr 我正在结构上注册序列化器和反序列化器 序列化器未被调用 但解串器被调用 我怎样才能解决这个问题 它适用于引用类型 并且执行JsConfig
  • 如何在 C# 中进行非阻塞套接字调用来确定连接状态?

    Socket 上 Connected 属性的 MSDN 文档说明如下 Connected 属性的值 反映连接的状态 截至最近一次操作 如果 你需要确定当前 连接状态 进行 非阻塞 零字节发送调用 如果 调用成功返回或 抛出 WAEWOULD
  • CefSharp 中的可拖动无边框窗口

    我想在某些 HTML 元素上实现带有拖动逻辑的无边框窗口 我找到了一些工作示例 例如适用于 Chrome 的无框窗口 https chrome google com webstore detail frameless window samp
  • iOS6 中的 CoreMIDI/PGMidi 虚拟 midi 错误

    面临两个错误 此代码在 iOS 4 和 5 中有效 但更新到 6 后 它不起作用 我发现了以下内容 但不知道如何在代码中修复它 从 iOS 6 开始 应用程序需要在其 UIBackgroundModes 中拥有音频键才能使用 CoreMID
  • Mvvm交叉绑定

    我尝试将小部件绑定到视图模型属性 但出现异常 MvxBind Warning 14 76 Failed to create target binding for binding Signature for Order ClientSigna
  • 创建 WCF 消息的缓冲副本

    我在消息检查器中有以下代码来检查响应正文 我知道 WCF 消息只能读取一次 因此我首先创建一个副本 但使用以下代码我仍然收到错误 此消息无法支持该操作 因为它已被读取 我错过了什么吗 MessageBuffer buffer message
  • Firefox 扩展自定义字体

    我正在使用 Firefox Add on SDK 创建扩展并执行 PageMod 这段代码位于main js exports main function var pageMod require sdk page mod pageMod Pa
  • django-allauth:模块“accounts.forms”未定义“SignupForm”类

    我收到以下错误 django core exceptions ImproperlyConfigured 模块 accounts forms 没有定义 SignupForm 类 设置 py ACCOUNT SIGNUP FORM CLASS
  • 动态设置错误动作的布局文件

    我知道有不同的方法来选择布局文件 可以办到 在配置中 with Yii app gt layout with Controller layout 我有一些使用不同布局文件的控制器 如下所示 class FirstController ext
  • 我应该模拟与我的测试对象交互的所有对象吗?

    我正在努力知道如何决定应该模拟与我的测试对象交互的哪些对象 class MyClass private Customer customer private Invoice invoice private PrintService ps pr
  • 在 .NET 中初始化空变量

    在 NET 中初始化 null 变量的正确方法是什么 我的一位同事告诉我 将变量硬定义为 null 会降低速度 int var1 good practice string s1 good practice int var2 0 bad pr
  • 如何使用 Java HttpServer/HttpExchange 获取 GET 中的查询字符串?

    我正在尝试用 Java 创建一个简单的 HttpServer 来处理 GET 请求 但是当我尝试获取请求的 GET 参数时 我注意到 HttpExchange 类没有相应的方法 有人知道读取 GET 参数 查询字符串 的简单方法吗 这就是我
  • NgStyle 返回:ERROR 错误:找不到不同的支持对象 '{"background-color":"blue"}'

    在我的模板中使用这个 span HELLO span 在我的组件中 myStyle string return background color blue 我越来越 ERROR Error Cannot find a differ supp
  • css 过渡不透明度淡入淡出背景

    我正在做一个transition当用户将鼠标悬停在图像上时 它会淡入透明白色 我的问题是我需要将颜色更改为黑色 我尝试过简单地添加background black 到包含的类transition 但不幸的是它不起作用 它仍然褪成白色透明 我
  • 是否可以继承 C++11 智能指针并覆盖相关运算符?

    根据cppreference com http en cppreference com w cpp memory shared ptr std shared ptr提供了一整套相对运算符 出于某些目的 我更希望使用相对运算符来根据比较引用的
  • 如何从html图像标签获取class和src

    我想检索课程并src使用正则表达式的图像标签 的位置class and src可以在任何地方 我能够得到src from
  • Jasmine angularjs - 监视控制器初始化时调用的方法

    我目前正在使用 Jasmine 与 Karma Testaulous 和 Web Storm 来编写单元测试 我在监视控制器初始化时立即调用的方法时遇到问题 是否可以监视控制器初始化时调用的方法 我的控制器代码 我试图监视的方法是getSe
  • 按下按钮后如何提示用户授予推送通知权限?

    I read 如何控制何时在 iOS 中提示用户推送通知权限 https stackoverflow com questions 30817069 how to control when to prompt user for push no