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 プロジェクト内の 2 つの watchOS 1 ターゲットを削除してから、Editor -> Add target を選択します。[watchOS]、[アプリケーション]、[WatchKit アプリ] の順に選択します。

ここに画像の説明を入力

これにより、watchOS 2 に必要なターゲットと設定が構成されます。

その後、ソース コードをプロジェクトに戻すことができますが、共有アプリ グループから Watch Connectivity の使用への移行などの変更を考慮して、コードを watchOS 2 に移行する必要があります。

アップデート:

そのファイルを追加するだけでは不十分です。Apple は、拡張機能の詳細を plist の設定とプロジェクト設定によって決定します。時計アプリの拡張機能が呼び出されない場合は、何かが正しく変更されていない可能性があります。おそらく、watch アプリ バンドルの拡張機能を使用する代わりに、電話で watchKit 1 アプリ拡張機能として実行されているのでしょうか?

手動で修正したい場合は、次の点を確認してください

  • WatchKit 拡張機能の Info.plist に含まれていることを確認してください

    <key>WKExtensionDelegateClassName</key>
        <string>$(PRODUCT_MODULE_NAME).ExtensionDelegate</string>
    
  • project.pbxprojWatch アプリと Watch 拡張機能の製品タイプが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 に答える