【问题标题】:How to present custom alertview and system permissions alertviews sequentially in order.如何按顺序呈现自定义警报视图和系统权限警报视图。
【发布时间】:2016-07-12 19:36:01
【问题描述】:

我有一个使用定位服务和通知的应用程序(我无法控制它们显示的用于确认/拒绝权限的警报视图)。我第一次启动该应用程序时,它会从警报视图中请求使用这两个功能的权限。我还有 2 个自定义权限,我想将它们显示为警报视图。我的问题是如何按顺序订购它们并在我确认/拒绝当前的警报视图后出现下一个警报视图。我最初的想法是为每个权限设置一个 isPermissionSet 标志,并且要呈现的下一个权限需要在能够呈现之前设置所有先前的权限。设置每个权限后,我调用一个刷新方法来检查所有权限(因为我的应用程序异步运行)。有更好的设计模式来解决这个问题吗?

【问题讨论】:

  • 权限警报仅在您的应用第一次尝试使用这些功能或请求权限时出现。因此,您需要确保您的应用在处理第一个功能之前不会请求第二个功能的逻辑。

标签: ios objective-c permissions uialertview


【解决方案1】:

对于这两个自定义权限,您可以使用 UIAlertController 和 UIAlertAction 按顺序显示警报。我假设一个权限的结果不会影响另一个权限请求。所以你可以这样做

func askPermissions1() {
  //Create UIAlertAction objects for Yes and No buttons and in their action handlers call askPermission2()
  //Create UIAlertController with the actions created above and present it
}

func askPermissions2() {
  //Create UIAlertAction objects for Yes and No buttons and in their action handlers call askLocation()
  //Create UIAlertController with the actions created above and present it
}

func askLocation() {
  //request for location here and handle the location manager delegate methods to determine what the user has chosen
  //In the delegate methods call askPushNotification()
}

func askPushNotification() {
  //request for push notification permission and handle their delegate accordingly
}

希望这会有所帮助。

【讨论】:

  • 第一个权限决定是否询问第二个、第三个和第四个。第三和第四不关心第二是确认还是拒绝。我的应用程序异步运行,因此每次我确认/拒绝权限时,我都会执行刷新并检查所有权限。我希望旁边显示的权限是正确的,并且只显示一次。我当前的解决方案要求我检查一堆标志以显示正确的标志。我只是想知道是否有更好的解决方案/设计模式可以解决这个问题。
猜你喜欢
  • 2012-12-18
  • 2011-02-05
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
相关资源
最近更新 更多