アプリを最新の Swift 2.0 構文に更新しました。そうするうちに、ウォッチキット アプリが壊れてしまいました。問題は、ウォッチキット アプリが、フレームワーク AVFoundation を参照するクラスを参照していることです。WatchOS2 は、標準フレームワークの一部をサポートしなくなったようです。
ネットワークベースの操作のサポートには、次のテクノロジが含まれます。
WatchKit 拡張機能は、NSURLSession オブジェクトを介してネットワークに直接アクセスできます。WatchKit 拡張機能は、バックグラウンドでファイルをダウンロードする機能など、NSURLSession 機能に完全にアクセスできます。このクラスの使用方法については、URL Loading System Programming Guide を参照してください。Watch Connectivity フレームワークは、Watch アプリと iOS アプリ間の双方向通信をサポートします。このフレームワークを使用して、2 つのアプリ間のアクティビティを調整します。コンパニオン iOS アプリとの通信を参照してください。
そのため、AVFoundation フレームワークを使用しようとすると、「そのようなモジュールが見つかりません」というエラー メッセージが表示されるため、ウォッチ キットのコードをコンパイルできません。どうすればこれを回避し、Apple Watch アプリでそのクラスとフレームワークを参照し続けることができますか。電話と時計の間でデータを通信する必要がありますか? フレームワークを拡張機能にリンクする方法はありますか?
私がやろうとしているのは、InterfaceController で次のことです。
override func willActivate() {
super.willActivate()
let defaultsShared = NSUserDefaults(suiteName: "somesharedappgroup")
let defaults = NSUserDefaults.standardUserDefaults()
if let barcodeString = defaultsShared!.objectForKey("barcode") as? String {
if let barcodeContent = RSUnifiedCodeGenerator.shared.generateCode(barcodeString, machineReadableCodeObjectType: AVMetadataObjectTypeCode39Code) {
barcode.setImage(barcodeContent)
label.setText("ID: \(barcodeString)")
} else {
label.setText("Please setup extensions in the settings of SHPID.")
barcode.setImage(nil)
}
} else {
label.setText("Please setup extensions in the settings of SHPID.")
barcode.setImage(nil)
}
}
RSUnifiedCodeGenerator
AVFoundation を利用して文字列からバーコード イメージを生成するクラスです。さらに、ジェネレーターが取る型は AVObject: AVMetadataObjectTypeCode39Code です。この解決策は、最初の WatchOS ではうまく機能しましたが、OS 2 では壊れたままです。WatchConnectivity が解決策になる可能性があることがわかりました。電話自体からバーコードを渡すだけですが、iOS 8 のサポートを停止する必要があります。 WatchOS 2 で AVFoundation を使用するための最善の解決策があるとすれば、. ありがとう。