标签: watchos-2

WCSession.sendMessage工作50/50

最近,我正在研究一个与Watch/ iPhone通信有关的项目.但是我的代码有时工作并且有时不起作用,这对我来说有点奇怪,因为我认为代码应该工作与否.它不能是50/50.因此,我不知道出了什么问题.

在iPhone上设置WCSession:

class WatchCommunicationController: NSObject, WCSessionDelegate {

    var session : WCSession?

    override init(){

        //  super class init
        super.init()

        //  if WCSession is supported
        if WCSession.isSupported() {    //  it is supported

            //  get default session
            session = WCSession.defaultSession()

            //  set delegate
            session!.delegate = self

            //  activate session
            session!.activateSession()

        } else {

            print("iPhone does not support WCSession")
        }
    }

    ... ...
}
Run Code Online (Sandbox Code Playgroud)

Watch上类似的WCSession设置:

class PhoneCommunicationController: NSObject, WCSessionDelegate {

    var session : WCSession?

    override init(){

        //  super class init
        super.init()

        //  if …
Run Code Online (Sandbox Code Playgroud)

ios swift watchos-2

10
推荐指数
1
解决办法
7744
查看次数

我可以构建自己的网络框架(依赖于AFNetworking)作为watchOS2框架吗?

我一直在尝试修改我的项目以支持WatchOS2架构.目前我有一个基于AFNetworking的网络框架.到目前为止,我一直在使用我的手表应用程序.现在我正在尝试为watchos/watchsimulator平台构建框架.

我得到的是一些AFNetworking类的'SystemConfiguration/SystemConfiguration.h'文件找不到错误.

我知道系统配置不是watchOS2的可用系统框架之一.对于网络苹果:

联网

对基于网络的操作的支持包括以下技术:

WatchKit扩展可以使用NSURLSession对象直接访问网络.WatchKit扩展可以完全访问NSURLSession功能,包括在后台下载文件的功能.有关如何使用此类的信息,请参阅URL加载系统编程指南.Watch Connectivity框架支持Watch应用程序和iOS应用程序之间的双向通信.使用此框架来协调两个应用程序之间的活动.有关更多信息,请参阅与您的Companion iOS应用程序通信.

我想为我的网络sdk支持iOS和watchos.有没有办法为watchOS平台构建这个项目?或者这是否意味着我只允许在我的手表应用程序中使用NSURLConnection?

ios ios-frameworks afnetworking apple-watch watchos-2

10
推荐指数
1
解决办法
2061
查看次数

如何防止Apple Watch入​​睡?

我们正在开发一个Apple Watch项目,但如果不间断的话,手表会进入睡眠状态.

有什么方法可以阻止它进入睡眠状态吗?

xcode swift apple-watch watchkit watchos-2

10
推荐指数
1
解决办法
5454
查看次数

使用suiteName检测NSUserDefaults中的更改

在我的项目中,我使用app group将数据传输到apple watch!这看起来像这样

let sharedDefaults = NSUserDefaults(suiteName: "group.com.myappname.defaults")
sharedDefaults?.setObject(MyData, forKey: "DataKey")
sharedDefaults?.synchronize()
Run Code Online (Sandbox Code Playgroud)

在WKInterfaceController中,我使用以下代码获取数据:

let sharedDefaults = NSUserDefaults(suiteName: "group.com.myappname.defaults")
let MyData = sharedDefaults?.objectForKey("DataKey") as! [[AnyObject]]
Run Code Online (Sandbox Code Playgroud)

一切正常!

现在我尝试检测sharedDefaults中的数据?.objectForKey("DataKey")是否确实发生了变化.我尝试使用addObserver方法:

override func willActivate() {
NSUserDefaults(suiteName: "group.com.myappname.defaults")!.addObserver(self, forKeyPath: "DataKey", options: NSKeyValueObservingOptions.New, context: nil)
}

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>){
      print("Data Changed")
}
Run Code Online (Sandbox Code Playgroud)

但是"覆盖func observeValueForKeyPath"仅在WKInterfaceController激活时调用,并且当我在NSUserDefaults中更改数据时没有调用(suiteName:"group.com.myappname.defaults")

我也尝试使用NSNotificationCenter:

override func willActivate() {
let sharedDefaults = NSUserDefaults(suiteName: "group.com.myappname.defaults")
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(userDefaultsDidChangeNotificationMethod(_:)), name: NSUserDefaultsDidChangeNotification, object: nil)
}

func userDefaultsDidChangeNotificationMethod(notification: NSNotification){
 print("Data Changed") …
Run Code Online (Sandbox Code Playgroud)

nsuserdefaults ios swift watchkit watchos-2

10
推荐指数
1
解决办法
625
查看次数

我可以构建一个独立的Apple Watch应用程序吗?

在WWDC 2015中,提到手表支持本机应用程序,但我没有看到新Xcode 7中的选项,只是用同伴应用程序构建苹果手表应用程序.如果存在,请告诉我这样做的方法.

apple-watch watchos-2

9
推荐指数
2
解决办法
4939
查看次数

你的iPhone不可用.请选择其他设备,然后重试

当我尝试在我的iPhone(iOS 9.0b2)上构建我的Watch OS 2应用程序时,我收到以下错误,该应用程序与我的Apple Watch(watchOS 2.0b2)配对.

你的iPhone不可用.请选择其他设备,然后重试.

我已经尝试了所有显而易见的事情,重新启动iPhone,Watch,Mac等.我的所有软件都更新到最新版本,我的手表与我的iPhone配对.有没有人有任何想法?

xcode ios watchos-2

9
推荐指数
2
解决办法
4381
查看次数

如何使用Watch Connectivity传输UIImage

我怎么能转移的UIImageWatchConnecitivity从iPhone到苹果手表只加载在手机上无需用户交互,而且由于手表它调用编程.我需要这个,因为用于创建UIImageWatchkit API中不可用的使用逻辑的图像处理,所以它必须从手机创建.我似乎有一些使用Watch Connectivity的例子:

func startSession() {
    session?.delegate = self
    session?.activateSession()
}
Run Code Online (Sandbox Code Playgroud)

但是,我对手表套件和iOS一般都很陌生,对于如何使用这个会话管理器很困惑,特别是从手表到设备,而不是像我在网上的例子中看到的那样.有人可以提供一个如何在手表和手机上执行此操作的示例,以便UIImage从手表上拨打电话吗?

ios swift watchkit swift2 watchos-2

9
推荐指数
1
解决办法
4768
查看次数

iOS近乎实时地从Apple Watch获得心率

我需要制作一个近乎实时记录心率数据的应用程序,并尽快将此数据发送到服务器.

首先我采用了这种方法:观看os 2.0 beta:访问心率

事实上,它工作正常.HealthKit每五秒钟会有一个新的心率数据.但现在我遇到了无法与服务器同步的问题.

我的第一个方法是Watch应用程序.手表正在向服务器发送数据.这不起作用,因为一旦手表上的屏幕变黑,它就会停止发送.

我的下一个方法是每隔5秒在iPhone上查询HealthKit以获取新数据.只要应用程序位于前台,这就有效.

然后我看到有一些背景功能可以监视HealthKit本身并从后台撤消应用程序,你可以做一些事情.(enableBackgroundDeliveryForType)这似乎不适用于心率(Apple文档说的这样的事情,如步骤这不起作用,我猜心率是其中之一).

我现在被困住了.你知道怎么做吗?我需要在iPhone上每5-10秒执行一次后台任务.这似乎是不可能的

ios swift healthkit watchkit watchos-2

9
推荐指数
2
解决办法
9407
查看次数

禁用WKInterfaceSwitch的背景颜色

当我使用WKInterfaceSwitch时,watchOS在整个控件后面绘制半透明背景.我不希望出现此背景,但无法找到隐藏或禁用它的任何方法.

这可能吗?

apple-watch watchos-2 wkinterfaceswitch

9
推荐指数
1
解决办法
139
查看次数

在使用iOS 9.3的watchOS 2.2中,WCSession的transferUserInfo不再可靠地工作

我有一个使用现有的iOS 9.2和2.1 watchOS应用sendMessage,并transferUserInfo从iPhone将数据发送到Apple关注.如果sendMessage失败,我将使用transferUserInfo队列数据以便以后交付:

// *** In the iOS app ***
self.session.sendMessage(message, replyHandler: nil) { (error) -> Void in
    // If the message failed to send, queue it up for future transfer
    self.session.transferUserInfo(message)
}

// *** In the watchOS app ***
func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) {
    // Handle message here
}

func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
    // Handle message here
}
Run Code Online (Sandbox Code Playgroud)

在没有更改任何代码并在真实设备上使用watchOS 2.2在iOS 9.3上运行应用程序(模拟器没有相同的问题),sendMessage …

watchkit ios9 watchos-2 wcsession ios9.3

9
推荐指数
1
解决办法
3833
查看次数