- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有以下运行但始终调用 didFailWithError 委托(delegate)方法的代码。是否有可能在 tvOS 中获取 Apple TV 设备的位置?
AppDelegate.h
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate, CLLocationManagerDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, retain) CLLocationManager *locationManager;
@end
AppDelegate.m
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"locationManager requestLocation");
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self.locationManager requestLocation];
return YES;
}
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"locationManager didFailWithError %@", error);
}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
NSLog(@"locationManager didUpdateLocations");
}
控制台显示:
locationManager didFailWithError Error Domain=kCLErrorDomain Code=0 "(null)"
编辑:我还将 NSLocationWhenInUseUsageDescription 添加到 .plist 并添加了
[self.locationManager requestWhenInUseAuthorization];
代替上面的[self.locationManager requestLocation]
。我添加了 didChangeAuthorizationStatus
委托(delegate)方法并将调用移动到那里的 requestLocation
。执行此操作后,didChangeAuthorizationStatus 被调用,状态值为 kCLAuthorizationStatusNotDetermined,并且没有弹出任何权限请求要求“不允许”或“允许”,随后对 requestLocation
的调用仍然触发 didFailWithError
。我尝试从 Apple TV 中完全删除该应用程序,认为这可能是一次性弹出窗口,但 requestWhenInUseAuthorization
仍然没有执行任何提示权限的操作。
只有在手动进入 Apple TV 设置 - 常规 - 隐私 - 定位服务,然后找到我的应用程序并将设置从“从不”手动更改为“使用应用程序”。这显然不理想,如果 requestWhenInUseAuthorization
实际上会提示用户选择会更好。
最佳答案
仅根据发布的代码,您在这样做之前并未请求使用定位服务的授权。您需要在 CLLocationManager
实例上调用 requestWhenInUseAuthorization
。在尝试使用它之前调用 authorizationStatus
和 locationServicesEnabled
通常也是明智的。你可以read more in the docs .
关于objective-c - 如何在 tvOS 中获取 Apple TV 设备的当前位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33559049/
我是一名优秀的程序员,十分优秀!