ios-检测用户是否拒绝使用默认位置

问题描述

检测用户是否拒绝使用默认位置

请问一下,检测ios的用户是否拒绝开启默认位置,能实现么?

我需要在实现检测结果,然后根据他们的选择显示不同的视图控制器。

请赐教,谢谢。

解决方案

假设你使用LocationManager,那么在delegate中有个方法是

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

你来检测这个error.code是什么,具体参见apple官方文档Core Location Constants Reference中CLError部分

enum {
kCLErrorLocationUnknown  = 0,         // location is currently unknown, but CL will keep trying
kCLErrorDenied,                       // CL access has been denied (eg, user declined location use)
kCLErrorNetwork,                      // general, network-related error
kCLErrorHeadingFailure,               // heading could not be determined
kCLErrorRegionMonitoringDenied,       // Location region monitoring has been denied by the user
kCLErrorRegionMonitoringFailure,      // A registered region cannot be monitored
kCLErrorRegionMonitoringSetupDelayed, // CL could not immediately initialize region monitoring
kCLErrorRegionMonitoringResponseDelayed, // While events for this fence will be delivered, delivery will not occur immediately
kCLErrorGeocodeFoundNoResult,         // A geocode request yielded no result
kCLErrorGeocodeFoundPartialResult,    // A geocode request yielded a partial result
kCLErrorGeocodeCanceled,              // A geocode request was cancelled
kCLErrorDeferredFailed,               // Deferred mode failed
kCLErrorDeferredNotUpdatingLocation,  // Deferred mode failed because location updates disabled or paused
kCLErrorDeferredAccuracyTooLow,       // Deferred mode not supported for the requested accuracy
kCLErrorDeferredDistanceFiltered,     // Deferred mode does not support distance filters
kCLErrorDeferredCanceled,             // Deferred mode request canceled a previous request

};
typedef NSInteger CLError;

解决方案二:

用下面的delegates方法:

- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error
{
    if([error code]== kCLErrorDenied)
        self.locationDenied = YES;

        switch ([error code]) {
        // "Don't Allow" on two successive app launches is the same as saying "never allow". The user
        // can reset this for all apps by going to Settings > General > Reset > Reset Location Warnings.
        case kCLErrorDenied:
            [appDelegate showAllowGPSLocationView];
        default:
            break;
    }

    self.locationDefined = NO;
}

在AppDelegate中创建showAllowGPSLocationView方法,还要访问GPS定位。

时间: 2024-12-31 16:26:48

ios-检测用户是否拒绝使用默认位置的相关文章

IOS提醒用户重新授权打开定位功能_IOS

iOS 8及以上版本最不为人知的一个特点是与应用设置的深层链接,用户可以根据APP的需要授权启用位置.通知.联系人.相机.日历以及健康等设置. 大多数应用程序仅仅是弹出一个包含操作指令的警示窗口,如"进入设置>隐私>位置>OUR_APP".例如,推特的应用程序有一个更为精致和友好的指示对话框,所以我就把它当做一个例子来使用(可惜大多数应用程序都会有一个非常糟糕的版本). 我现在以一个心情沮丧用户的身份写这个帖子,希望更多的iOS开发者能与用户设置建立直接的深层链接,尤

教你在Win XP中更改命令提示符默认位置

在Windows XP中,单击"开始→所有程序→附件→命令提示符",即可打开命令提示符窗口,默认情况下系统会定位到"X:\Documents and Settings\当前用户名>"下,其中X为操作系统所在盘符.但一般来说,我们用到命令提示符时需要在特定的目录下工作,因此有必要使用"计算机管理"功能来更改命令提示符的默认位置: 单击"开始→控制面板→性能和维护→管理工具→计算机管理",依次展开"系统 工具→本地

修改Word中“打开”的默认位置!

我们在使用Word进行文档处理的过程中,通常会使用菜单栏中的"文件"下的"打开"选项或者工具栏中的"打开"按钮来打开文档文件;也常常使用菜单栏中的"文件"下的"保存"选项或者工具栏中的"保存"按钮来保存文档文件.默认情况下,在弹出的"打开"对话框或者"保存"对话框中,Office会自动定位到"我的文档 但许多用户特别是多人共用一机的用户,

xp纯净版系统修改命令提示符默认位置的方法

xp纯净版系统修改命令提示符默认位置的方法   具体如下: 1.在Windows XP中,单击"开始→所有程序→附件→命令提示符",即可打开命令提示符窗口,默认情况下系统会定位到"X:Documents and Settings当前用户名>"下,其中X为操作系统所在盘符.但一般来说,我们用到命令提示符时需要在特定的目录下工作,因此有必要使用"计算机管理"功能来更改命令提示符的默认位置. 2.单击"开始→控制面板→性能和维护→管理工

Win7系统下怎么还原“我的文档”到默认位置c盘

  有不少用户安装完win7系统之后,发现我的文档默认位置是存放到了非c盘或D盘,这是因为现在的win7系统为了让资料更加安全都会将个人文件夹设置到非系统盘,但是还有一些用户并不喜欢这样的方式,那么要如何将我的文档等个人文件夹恢复到默认位置,也就是c盘用户目录下呢,下面小编就给大家介绍一下操作方法吧. 方法一. 1.双击打开桌面上的个人文件夹,然后找到我的文档右键点击"文档"属性; 2.切换到"位置"选项卡下,然后点击还原默认值按钮,并点击应用; 3.接下去对&qu

php 计划任务 检测用户连接状态_php技巧

计划任务 复制代码 代码如下: ignore_user_abort(); // 用户关闭浏览器程序依然执行 set_time_limit(0); // 不限制程序运行时间 $interval = 3; // 程序循环间隔时间秒 $link = mysql_connect('localhost', 'username', 'paswd'); mysql_select_db('test'); mysql_query("SET NAMES 'utf8'"); do { // 用户关闭浏览器停

winform-如何判断textbox中的数据是用户输入的还是默认值

问题描述 如何判断textbox中的数据是用户输入的还是默认值 如题.大体意思是这样的 一个注册窗体 textbox中有默认值 如:请输入字符.数字. 当点击提交按钮的时候 怎么判断是不是用户输入的用户名还是 原本之前就有的默认值呢? 现在点击按钮 因为textbox中有默认值 所以 判断是正确的 请问 这里应该怎么写? 解决方案 加个on_change事件,有值发生变化就是用户输入的 解决方案二: 比如你按button1就去检测textBox1_TextChanged是否发生 button1.

php:检测用户当前浏览器是否为IE浏览器

/** * 检测用户当前浏览器 * @return boolean 是否ie浏览器 */ function chk_ie_browser() { $userbrowser = $_SERVER['HTTP_USER_AGENT']; if ( preg_match( '/MSIE/i', $userbrowser ) ) { $usingie = true; } else { $usingie = false; } return $usingie; } 以上是小编为您精心准备的的内容,在的博客.

VC++根据explorer.exe进程检测用户是否已登录

      下面来看一个VC++根据explorer.exe进程检测用户是否已登录,希望例子能帮助到各位.  代码如下   void CALLBACK timeCall(UINT timeid, UINT umsg, DWORD_PTR dwUser, DWORD dw1, DWORD_PTR dw2) {  DWORD dwSessionId = WTSGetActiveConsoleSessionId();        //获取控制台的session  HANDLE hSnap = Cre