标签: watchos-2

使用 xcodebuild 创建 watchOS2 模拟器版本

我想使用 Terminal 和 xcodebuild 构建一个模拟器。到目前为止,传递类似“-sdk iphonesimulator9.0”之类的东西是有效的。现在手表扩展正在手表上运行,我收到此错误:

=== BUILD TARGET appName WatchKit Extension OF PROJECT appName WITH     CONFIGURATION Debug ===

Check dependencies
target specifies product type 'com.apple.product-type.watchkit2-extension',     but there's no such product type for the 'iphonesimulator' platform
Run Code Online (Sandbox Code Playgroud)

您知道如何构建支持 watchOS2 的应用程序的模拟器版本吗?

谢谢!

simulator build xcodebuild ios watchos-2

5
推荐指数
1
解决办法
1318
查看次数

使用WatchConnectivity从Watch进行通信以杀死iOS应用程序

使用WatchOS2 WatchConnectivity,是否有可能"唤醒"iOS对手使用"交互式消息"向其发送消息?

我问的原因是因为我有一个openParentApplication用于发送/接收消息的WatchOS1应用程序,如果它没有运行,它实际上会唤醒iOS应用程序,让它接收我的消息并让它发回响应.之后,它再次关闭iOS应用程序.

我对如何在WatchOS2中做同样的事情感到有点困惑.因为当我使用"交互式消息传递" WCSession时,当我杀死iOS应用程序时,我发送的消息不会发送.

我也注意到WatchOS2现在包含了各种各样的框架,你可以用,像NSURLSessionEventKit委托给iPhone的所有呼叫.那么也许这是推荐的方式?我的手表应用程序巧合只需要事件EventKit来操作.所以我可以改写WatchConnectivity我的应用程序的一部分来EventKit代替使用.如果我的应用程序必须使用HTTP,我可以NSURLSession直接使用.

任何人都可以确认在WatchOS2中与iPhone通信的预期方式是使用CoreData/ EventKit/ etc等本机框架吗?如果它是有道理的,但我确实希望有人证实这一点.

提前致谢.

ios swift watchos-2

5
推荐指数
1
解决办法
864
查看次数

保存到 watchOS 2 文档文件夹

我的 iOS 应用程序将数据库发送到WatchKit (watchOS 2). 在WatchKit我使用以下代码来获取监视文档文件夹以保存新文件:

\n\n
NSURL* fileURL = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"MyDatabase.sqlite"];\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会产生一个 URL:

\n\n
@"file:///var/mobile/Containers/Data/PluginKitPlugin/47E13085-9030-4ED2-906F-01CBA323F07A/Documents/MyDatabase.sqlite"\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,当我调用该函数时:

\n\n
[[NSFileManager defaultManager] replaceItemAtURL:fileURL withItemAtURL:url backupItemName:nil options:0 resultingItemURL:nil error:&error];\n
Run Code Online (Sandbox Code Playgroud)\n\n

它抛出一个错误说:

\n\n
\n

错误域=NSCocoaErrorDomain代码=512“文件\xe2\x80\x9cMyDatabase.sqlite\xe2\x80\x9d无法\xe2\x80\x99t保存在文件夹\xe2\x80\x9cDocuments\xe2\x80\x9d中。” \n 错误域=NSCocoaErrorDomain 代码=513 “您\xe2\x80\x99t 无权保存文件\xe2\x80\x9cMyDatabase.sqlite\xe2\x80\x9d

\n
\n\n

我怎样才能找到一个允许我保存的文件夹?\n当然,这段代码在模拟器中工作得很好,所以我假设我错过了一些不太明显的东西。

\n\n

BR\n弗雷德里克

\n

objective-c watchos-2

5
推荐指数
1
解决办法
1665
查看次数

将我的应用程序从WatchOS1迁移到WatchOS2

我正在将我的应用程序从WatchOS1迁移到WatchOS2.我在核心数据的帮助下使用应用程序组在手表OS1上共享数据,所以我想在手表OS2上使用相同的功能.我怎样才能实现同样的功能?

watchkit watchos-2

5
推荐指数
1
解决办法
183
查看次数

iOS-WatchKit 文件传输工作不可靠

我已经为 iOS 9 和 WatchOS 2 构建了一个应用程序。iOS 应用程序会定期将图像文件从 iPhone 传输到手表。有时,这些是从应用程序推送的,有时是 Watch 请求(拉取)它们。如果拉取,我将请求异步,并使用完全相同的 iOS 代码在两种情况下传输图像。

大约一半的时间(可能是 2/3),文件传输有效。其他时候,似乎什么也没发生。无论我是推还是拉图像,这都是一样的。

在 iOS 端,我使用类似于此的代码(会话已激活):

   if ([WCSession isSupported]) {
      WCSession *session = [WCSession defaultSession];
      if (session.reachable) {
         NSData *imgData = UIImagePNGRepresentation(img);

         NSURL *tempFile = [[session watchDirectoryURL] URLByAppendingPathComponent: @"camera.png"];
         BOOL success = [imgData writeToFile: [tempFile path] atomically: NO];
         if (success) {
            NSLog(@"transferFile:metadata:");
            [session transferFile: tempFile metadata: nil];
         } else {
            NSLog(@"will not call transferFile:metadata:");
         }
      } else {
         NSLog(@"Camera watch client not reachable.");
      }
   }
Run Code Online (Sandbox Code Playgroud)

在手表扩展端,我有一个单例来激活手表会话并接收文件:

- …
Run Code Online (Sandbox Code Playgroud)

objective-c ios watchkit watchos-2

5
推荐指数
1
解决办法
1159
查看次数

Apple Watch OS 2 如何在自定义通知中显示/隐藏操作按钮

我正在构建一个 Apple Watch os 2 应用程序扩展,我需要实现通知。当我阅读苹果文档时,我发现我需要的是一个自定义通知,因此为它构建了 UI,但问题是我必须处理多个通知案例,而不是所有案例都有一个操作按钮,所以我的问题是如何更改操作按钮的名称以及是否可以隐藏它。

我知道可以使用 PushNotificationPayload.apns 文件创建操作按钮,也可以在 apns 文件中设置操作按钮和功能,但是否也可以在代码中执行此操作(隐藏/显示按钮操作并调整它的姓名)。

我在想我可以在 didReceiveRemoteNotification:withCompletion: 中做一些实现吗?

这是一些背景信息:

在此处输入图片说明 在此处输入图片说明

更新 1

再次阅读此苹果文档后,我进行了以下更改:

  1. 实现了另一个通知接口控制器并检查了“具有动态接口”

在此处输入图片说明

  1. 添加了“通知类别名称”

在此处输入图片说明

  1. 创建了“WKUserNotificationInterfaceController”的另一个子类并将其与故事板中的新自定义通知相关联

使用“类别”键和每个自定义类别的正确值(在我的情况下为“Cat1”和“Cat2”),设法测试在通知到达时是否加载了正确的类别。

现在我唯一的问题是:

我如何在本地管理自定义通知按钮?(显示多少按钮,按钮的标题,这样我就不会像 .apns 测试通知那样依赖服务器)

如果这是不可能的,那么我的问题就变成了:

关于显示的操作,来自服务器的通知应该如何(格式)?我是否仍应将操作发送为:

"WatchKit Simulator Actions": [
        {
            "title": "First Button",
            "identifier": "firstButtonAction"
        }
    ]
Run Code Online (Sandbox Code Playgroud)

或者我应该将它们传递给aps密钥:

"alert" : {
     "body" : "Test message",
     "title" : "Optional title",
     "action" : [
        {
           "title" : "First Button",
           "identifier" : "firstButtonAction"
        }
     ]
  }
Run Code Online (Sandbox Code Playgroud)

更新 2

在阅读了将操作按钮添加到通知的文档后,我认为这是我需要做的,同时阅读本教程。但主要区别在于,这样做也会影响我的 iOS …

push-notification ios apple-watch watchkit watchos-2

5
推荐指数
0
解决办法
1097
查看次数

WatchOS 2 中 Watch 扩展中的 Assets.xcassets

Assets.xcassetsWatchOS 2 中 Watch Extension的目的是什么?这些资产中应包含哪些图像?

ios xcasset swift watchkit watchos-2

5
推荐指数
1
解决办法
586
查看次数

调用 ExtensionDelegate 为复杂功能创建/刷新数据

我所有的数据创建都是在ExtensionDelegate.swift.

问题ExtensionDelegate.swift没有得到该功能之前叫getCurrentTimelineEntryForComplication我的ComplicationController.swift

有任何想法吗? 这是我的代码和详细信息:

所以我的数组extEvnts是空的ComplicationController.swift

    func getCurrentTimelineEntryForComplication(complication: CLKComplication, withHandler handler: ((CLKComplicationTimelineEntry?) -> Void)) {

        let extEvnts = ExtensionDelegate.evnts
}
Run Code Online (Sandbox Code Playgroud)

因为 myExtensionDelegate.swift还没有被调用,这就是为数组创建数据的原因:

class ExtensionDelegate: NSObject, WKExtensionDelegate, WCSessionDelegate {

    private let session = WCSession.defaultSession()
    var receivedData = Array<Dictionary<String, String>>()
    static var evnts = [Evnt]()

    func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {

        if let tColorValue = userInfo["TeamColor"] as? String, let matchValue = userInfo["Matchup"] as? String { …
Run Code Online (Sandbox Code Playgroud)

ios swift watchkit watchos-2 apple-watch-complication

5
推荐指数
1
解决办法
1850
查看次数

在watchOS 2中阅读NSUserDefaults(我知道App Groups不起作用)

Apple文档说:"此外,iOS会自动将iOS应用程序首选项的只读副本转发给Apple Watch.您的WatchKit扩展程序可以使用NSUserDefaults对象读取这些首选项......".https://developer.apple.com/library/prerelease/watchos/documentation/General/Conceptual/WatchKitProgrammingGuide/SharingData.html#//apple_ref/doc/uid/TP40014969-CH29-SW1

但我无法读取我的WatchKit应用程序中保存在我的iPhone应用程序中的默认值,我做错了什么?

在WatchKit应用程序中,我甚至可以保存(仅限WatchKit)默认值,还是甚至不起作用?

iPhone Data:

let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(dataArray, forKey: "DataSaved"
Run Code Online (Sandbox Code Playgroud)

观看ExtensionDelegate:

let defaults = NSUserDefaults.standardUserDefaults()
print(defaults.arrayForKey("DataSaved"))
print(defaults.objectForKey("DataSaved"))
Run Code Online (Sandbox Code Playgroud)

arrayForKeyobjectForKey用于打印nil.

我一定做错了什么,你知道它会是什么吗?

nsuserdefaults ios swift watchkit watchos-2

5
推荐指数
1
解决办法
3438
查看次数

无法调试/安装 Watch App Extension

我遇到这个问题已经有一段时间了,一直无法解决这个问题。大约 90% 的时间,我的手表应用程序无法在设备上安装。该应用程序将显示安装完成约 80%,然后失败并退出,在

iPhone 调试日志控制台

<Error>: 0x4029b000 __106-[ACXCompanionSyncConnectioninstallWatchAppWithBundleID:withProvisioningProfileInfo:completionWithError:]_block_invoke_3: Failed to install app com.mea.AppName.watchkitapp : Error Domain=ACXErrorDomain Code=17 "Got error 17 in install done from remote side (MI error ApplicationVerificationFailed ; Extended 0xe8008017 ; Desc Failed to verify code signature of /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.eC3skb/extracted/Payload/Watch.app/PlugIns/Watch Extension.appex : 0xe8008017 (A signed resource has been added, modified, or deleted.))" UserInfo={FunctionName=-[ACXServerInstallOperation receivedDictionaryOrData:], SourceFileLine=524, NSLocalizedDescription=Got error 17 in install done from remote side (MI error ApplicationVerificationFailed ; Extended 0xe8008017 ; Desc Failed to verify code signature of …
Run Code Online (Sandbox Code Playgroud)

cocoapods watchkit watchos-2

5
推荐指数
1
解决办法
417
查看次数