WatchKit WatchOS - Apple Watch 上从未显示位置服务提示

2024-04-27

当我打电话时requestWhenInUseAuthorization()从 Watch 应用程序中,位置服务提示永远不会向用户显示:无论是在 Watch 应用程序中,还是在 iPhone 应用程序中。

  • The 支持无需安装iOS应用程序即可运行未选中(如果我选中它,提示会正确显示,但我不希望我的应用程序在没有 iOS 配套应用程序的情况下运行)。
  • 我添加了NSLocationWhenInUseUsageDescription键入 iPhone 应用程序和 Watch Extension 的 info.plist。
  • 我还尝试在后台模式下添加位置服务(适用于 iPhone 和 Watch Extension)。

怎样才能让手表上显示提示呢?这可能吗?我不一定要要求我的用户打开他们的 iPhone 应用程序来管理应用程序中的请求位置。


import SwiftUI
import CoreLocation

struct ContentView: View {
    
    @StateObject var watchLocationManager = WatchLocManager()
    
    var body: some View {
        Button("Request location") { watchLocationManager.requestAuthorization() }
            .onAppear {
                watchLocationManager.setupLocationManager()
            }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
    
class WatchLocManager: NSObject, ObservableObject {

    private var locationManager = CLLocationManager()
    
    func setupLocationManager() {
        self.locationManager.delegate = self
        self.locationManager.activityType = .otherNavigation
        self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
        self.locationManager.distanceFilter = 20.0
    }
    
    func requestAuthorization() {
        self.locationManager.requestWhenInUseAuthorization()
    }
}

extension WatchLocManager: CLLocationManagerDelegate {

    func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
        print("⌚️ locationManagerDidChangeAuthorization: \(manager.authorizationStatus.rawValue)")
    }
    
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        print(locations)
    }
    
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        print(error)
    }
}

iPhone 和 Watch 共享“隐私”>“位置服务设置”。如果应用程序已在 iPhone 上具有授权状态,则不会在 Watch 上再次询问。

设置“设置”>“隐私”>“位置服务”>“您的应用”>“允许位置访问”>“下次询问”。

然后打开手表应用程序。

要求的步骤

新项目>WatchOS>带有 WatchApp 的 iOS 应用程序

填写产品名称,其他无变化

保存在 Mac 文件夹中

已更换struct ContentView & struct ContentView_Previews用你的代码。

The ContentView.swift文件位于AppName folder.

添加到上述文件的Target Membership the AppName WatchKit Extension。我在File Inspector通过选中该框。

去了ContentView.swift文件位于AppName WatchKit Extension文件夹并删除(取消选中)文件的Target Membership to AppName WatchKit Extension。 (如果不这样做,您将得到一个副本)

Added NSLocationWhenInUseUsageDescription to Info.plist在下面AppName WatchKit Extension Folder.

确信AppName WatchKit App方案被选定。

按下播放键。等到加载完成...

按下“请求位置”按钮

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WatchKit WatchOS - Apple Watch 上从未显示位置服务提示 的相关文章

  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • 模态转场需要点击 2 次而不是 1 次

    我的 UITableView 需要点击 2 次才能显示所选单元格的详细信息页面 一次用于选择 另一次用于显示详细信息视图 我希望有一个 CLI 直接显示所单击单元格的详细视图 我在 UITableViewManager m 中使用此方法的模
  • 更改 iOS7 中 UIAlertView 的字体大小

    我想更改alertView中消息文本和标题文本的字体大小 苹果网站上没有任何文档谈到这一点 但苹果在其子类注释中表示 UIAlertView 类旨在按原样使用 请参考以下链接 https developer apple com librar
  • React Native - NSNumber 无法转换为 NSString

    下面是我的反应组件的一部分 我有一个名为 daysUntil 的道具进入此组件 其中包含一个数字 在此示例中 传递数字 0 导致 fontWeight 函数返回 700 render function return
  • 如何在 Swift 中“生成”闭包类型别名?

    为了使我的代码更易于阅读 我在 Swift 中对各种类型的闭包使用类型别名 我有以下基本的闭包集 public typealias FailureClosure error NSError gt Void public typealias
  • React Native Detox:无法接受系统警报弹出的位置权限

    使用以下命令从命令行启动应用程序detox test configuration ios sim debug 通过代码启动应用程序await device launchApp permissions location always noti
  • CSS 安全区域属性在 iPhone X 上不起作用

    就我而言 我正在 iPhone X 上运行一个 Web 应用程序 我尝试在顶部添加一个填充 以使用 Webkit 的安全区域 css 属性将我的身体推到安全区域padding top constant safe area inset top
  • 核心数据executeFetchRequest消耗大量内存

    我正在核心数据数据库中插入 cca 100 000 条记录 数据库包含 3 个实体 球员 俱乐部 球员俱乐部 实体之间存在关系 玩家 gt 玩家俱乐部俱乐部 在 PlayerClub 中插入时 我注意到插入大约 50 000 条记录后会消耗
  • 尽早检测有问题的 XIB 视图

    我的笔尖名称有一个拼写错误 当我推向导航控制器时 它在代码中被破坏了 弄清楚它并没有花太长时间 但我认为最好尽早断言格式良好 以便更容易弄清楚 问题是它不是零 它只是无法从笔尖正确地形成自己 在 initWithNib 之后是否有更好的断言
  • 从应用程序打开/关闭 iPhone 的 Wifi

    我需要打开或关闭 iPhone 中的 wifi 有什么方法可以做到吗 还是被禁止了 私有框架 所有使用公共 SDK 编写的应用程序都经过沙箱处理 他们只能访问苹果认为可以在该沙箱中使用的属性和数据 恐怕 Wi fi 不在列表中 请看一下这个
  • 如何在复杂的层次结构中上下同步 CALayer 和 UIView 动画

    See 如何在整个层次结构中管理 CALayer 动画 https stackoverflow com questions 26917908 how to manage calayer animations throughout a hie
  • FIRApp 链接器错误 [“_OBJC_CLASS_$_FIRApp”]

    我已经搜索过 SO 和 Google 但找不到有效的答案 我已经在多个项目中使用了新的 Firebase Cocoapod 但是现在 当将其添加到不同的项目时 我收到以下错误 我正在使用 Xcode 7 3 1 和 cocoapods 1
  • 如何动态添加XCTestCase

    我正在为一个白标签项目编写 UI 测试 其中每个应用程序都有一组不同的菜单项 测试点击每个菜单项并截取屏幕截图 使用快车道快照 https docs fastlane tools actions snapshot 目前这一切都发生在一个内部
  • Textview 中心文本对齐 IOS 7

    void observeValueForKeyPath NSString keyPath ofObject id object change NSDictionary change context void context NSLog He
  • 当键盘出现时调整 UITextView 的大小

    我想在键盘出现时调整文本视图的大小 我的代码如下 我打开了自动布局 因此使用来自超级视图的 textView gt bottom 空间的约束 并通过 IBOutlet distanceFromBottom 引用它 void keyboard
  • iOS 版 Google 地图 sdk 中折线的轮廓

    我的要求是在地图上显示一条绿色折线 但当地图切换到卫星视图时 绿色折线变得不清楚 我无法改变折线的颜色 因此 为了将折线与背景 地图的卫星视图 区分开来 我需要为折线绘制白色轮廓 我浏览了 GMSPolyline 类的文档 但找不到任何可以
  • SwiftUI 自动调整底部工作表的大小

    SwiftUI 有很多底部工作表的示例 但是它们都指定了使用 GeometryReader 工作表可以增长到的某种类型的最大高度 我想要的是创建一个底部工作表 其高度仅与其中的内容一样高 我使用首选项键提出了下面的解决方案 但必须有更好的解
  • ios swift 如何将默认语言设置为阿拉伯语?

    我正在开发一个有两种语言的应用程序 即英语和阿拉伯语 我用英语编写了该应用程序 然后用阿拉伯语本地化了该应用程序 更改语言时需要重新启动应用程序 我唯一的问题是 第一次安装应用程序时如何将默认语言设置为阿拉伯语 我尝试在编辑方案部分将语言设
  • 初始化Object中的空字符串?

    有人使用以下方法来初始化 NSstring NSString astring NSString alloc init 我想知道为什么不直接使用 NSString atring nil or NSString astring 没有semant
  • 在启动屏幕中执行代码已更新

    在原始启动屏幕中执行代码 https stackoverflow com questions 27642016 execute code in launch screen 现在默认的LaunchScreenXcode 项目中的文件已更改为

随机推荐