如何将ExtensionDelegate添加到watchOS 1到2升级?

时间:2016-03-12 18:59:04

标签: swift swift2 xcode7 watch-os-2 watch-os

我将watchOS 1应用升级为观看OS 2,并注意到新观看的2个目标中有ExtensionDelegate个等级。我尝试将此文件添加到我的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.
    }

}

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

1 个答案:

答案 0 :(得分:1)

更多更改,而不仅仅是添加该文件。

您应该做的是定位您的项目,然后选择编辑器 - >验证设置。

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

enter image description here

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

另一种方法

您可以备份watchOS 1文件,删除Xcode项目中的两个watchOS 1目标,然后选择编辑器 - >添加目标。选择watchOS,Application,然后选择WatchKit App。

enter image description here

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

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

<强>更新

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

如果您想尝试手动修复它,可以查看以下几项内容:

  • 确保WatchKit扩展名Info.plist包含

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

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

更多比那几行更改了更多。可能错过了其他更改,因此您可能希望删除目标并从空的监视项目开始,确定一切都已正确设置。否则,它会反复尝试发现其他可能未正确更改的内容。

顺便说一句,既然你遇到了问题,你应该file a bug report并包含你的watchKit 1应用程序,这样Apple就可以解决这个Xcode问题。