objective-c - 如何在 tvOS 中获取 Apple TV 设备的当前位置

标签 objective-c tvos apple-tv

我有以下运行但始终调用 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。在尝试使用它之前调用 authorizationStatuslocationServicesEnabled 通常也是明智的。你可以read more in the docs .

关于objective-c - 如何在 tvOS 中获取 Apple TV 设备的当前位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33559049/

相关文章:

swift - 按下 Siri 远程菜单按钮停止视频播放

ios - 想要使用 ios sdk 中的 AirPlay 应用程序在 Apple TV 上流式传输我的应用程序 View ?

apple-tv - 如何更新 Apple TV Developer Kit?无法通过 iTunes 使用 tvOS 软件

objective-c - 如何通过核心数据关系删除所有对象?

iphone - xcode 构建 svn 号插入不起作用

ios - NSURL 请求不起作用

tvos - 自动布局不会忽略 tvOS 中的 UITabBar

ios - iCloud:在 iOS 和 tvOS 之间同步键值存储

objective-c - 从堆栈中永久移除 UIViewController

objective-c - 如何扩展NSWindow的客户区?