与手表套件扩展和iPhone应用程序通信



我试图从iPhone应用程序发送数据到手表套件扩展,但失败了。并且不知道该怎么做。

我在模拟器上进行了测试并通过应用程序组发送数据。

这是我的步骤:

  1. 从苹果下载手表套件目录示例应用程序
  2. 为 iPhone 应用和 wtach 套件扩展添加应用组 (XXX.XXX.XXX)
  3. Add RequestOpenAccess: YES for NSExtensionAttributes (watch kit extension)
  4. 向 iPhone 应用添加一个按钮,该按钮将使用特定的套件名称向 NSUserDefaults 写入一个值
  5. 在监视工具包扩展中添加代码以读取 NSUserDefaults 数据。([NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:)

  6. 运行监视套件应用

  7. 手动单击 iPhone 模拟器中的目录应用程序
  8. 单击在步骤 4 中添加的按钮
  9. 在监视工具包扩展处添加断点以查看 NSUserDefaults 值是否已更改
  10. 什么也没发生

我错过了哪些必要的东西?

或者我应该使用另一种方法来做到这一点?

我想做的只是从iPhone发送数据以每秒观看。数据可以是字符串或图像。

谢谢

为了设置iPhone和iWatch之间的通信,我一直在将文件放入共享应用程序组文件夹中,并从Watch扩展程序对其进行监视。如果iPhone应用程序有任何更改,它会修改文件,并且将通知Watch扩展名并可以对其进行操作。

您需要:

  1. 在两个目标(iPhone 和手表扩展)上创建一个应用组。确保它已添加到 Apple 开发人员门户上的应用程序 ID 中(有时它不能很好地从 Xcode 传递)。

  2. 从 iPhone 应用写入应用组:

    NSString *destFolderPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:
                               @"YOUR_GROUP_STRING"].path;
    [UIImageJPEGRepresentation(image, 1.0) writeToFile:[destFolderPath stringByAppendingPathComponent:@"Your_Shared_File_Name.jpg"] atomically:YES];
    
  3. 从扩展名中读取文件:

    UIImage *image;
    NSURL *groupURL = [[NSFileManager defaultManager]
                   containerURLForSecurityApplicationGroupIdentifier:
                   @"YOUR_GROUP_STRING"];
    NSString *imagePath = [groupURL URLByAppendingPathComponent:@"Your_Shared_File_Name.jpg"].path;
    }
    if( [[NSFileManager defaultManager] fileExistsAtPath: imagePath]){
        image = [[UIImage alloc] initWithContentsOfFile: imagePath];
    }
    

一般来说,我建议您使用MMWormhole,如果您不需要在手表和主机应用程序之间传递任何太复杂的东西,则可以轻松使用。

最新更新