0

我正在将我的 watchOS 1 应用程序升级到 watchOS 2,并注意到ExtensionDelegate新的 watchOS 2 目标中有一个类。我尝试将此文件添加到我的 watchOS 1 应用程序(更新部署版本后),但它没有达到applicationDidFinishLaunching.

这是我的班级的样子:

import WatchKit

class ExtensionDelegate: NSObject, WKExtensionDelegate {

    func applicationDidFinishLaunching() {
        // Perform any final initialization of your application.
        print("applicationDidFinishLaunching for watchOS")
    }

    func applicationDidBecomeActive() {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    }

    func applicationWillResignActive() {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, etc.
    }

}

仅添加文件还有更多内容,还是我没有正确升级?

4

1 回答 1

2

除了添加该文件之外,还有很多变化。

你应该做的是定位你的项目,然后选择 Editor -> Validate Settings。

  • 这将验证您的项目并确定是否需要更新任何内容。作为该过程的一部分,它将提供将您的项目设置从 watchOS 1 升级到 watchOS 2。

在此处输入图像描述

所做的更改数量过多,无法单独列出;我不建议尝试手动升级您的项目。

另一种方法

您可以备份您的 watchOS 1 文件,删除 Xcode 项目中的两个 watchOS 1 目标,然后选择 Editor -> Add target。选择 watchOS、应用程序,然后选择 WatchKit 应用程序。

在此处输入图像描述

这将为 watchOS 2 配置必要的目标和设置。

然后,您可以将源代码添加回项目,但您仍然必须将代码转换到 watchOS 2 以考虑从共享应用程序组迁移到使用 Watch Connectivity 等更改。

更新:

仅仅添加该文件是不够的。Apple 通过 plist 首选项和项目设置确定有关扩展的详细信息。如果未调用您的手表应用扩展程序,则可能未正确更改某些内容。也许它仍在手机上作为 watchKit 1 应用程序扩展运行,而不是使用 watch 应用程序包中的扩展程序?

如果您想尝试手动修复它,您可以检查以下几件事:

  • 确保 WatchKit 扩展 Info.plist 包含

    <key>WKExtensionDelegateClassName</key>
        <string>$(PRODUCT_MODULE_NAME).ExtensionDelegate</string>
    
  • 确保project.pbxprojWatch App 和 Watch Extension 产品类型已更改为包含2

    productType = "com.apple.product-type.application.watchapp2";
    productType = "com.apple.product-type.watchkit2-extension";
    

除了那几行之外,还有更多的变化。可能错过了其他更改,因此您可能希望删除目标并从一个空的监视项目开始,确保一切都已正确设置。否则,就是反复试验,发现其他可能没有得到适当改变的地方。

顺便说一句,既然您遇到了问题,您应该提交一份错误报告并包含您的 watchKit 1 应用程序,以便 Apple 可以修复该 Xcode 问题。

于 2016-03-13T03:02:24.537 回答