Вот пример от Apple, как общаться с приложением Apple Watch .Вам нужно тщательно прочитать файл readme около 25 раз, чтобы все идентификаторы группы приложений, измененные в этом проекте, были изменены.
- Ваши основные активы приложения телефона не видны приложению для часов
- Вашресурсы раскадровки часов входят в цель WatchKit
- Ваши программно ресурсы, к которым обращаются, попадают в цель расширения часов
Оригинальные ответы:
- Могу ли я предоставить только один стиль усложнения (большой горизонтальный - модульный большой) - ДА
- Нужно ли предоставлять какой-либо контент приложения для iPhone, помимо управления логикой усложнения, или я могу уйти безимея контроллер представления? ДА - для приложений просмотра часов наложены ограничения на вычисления
- Контролирую ли я возникновение сложности, добавляя что-то в папку ресурсов (в ней есть несколько графических слотов)? См. Ниже - это и папка ресурсов, и заполнители
Измените приведенный выше пример, чтобы создать изображение заполнителя, отображаемое на часах (когда вы выбираете сложность при изменении макета экрана)
func getPlaceholderTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
// Pass the template to ClockKit.
if complication.family == .graphicRectangular {
// Display a random number string on the body.
let template = CLKComplicationTemplateGraphicRectangularLargeImage()
template.textProvider = CLKSimpleTextProvider(text: "---")
let image = UIImage(named: "imageFromWatchExtensionAssets") ?? UIImage()
template.imageProvider = CLKFullColorImageProvider(fullColorImage: image)
// Pass the entry to ClockKit.
handler(template)
}else {
handler(nil);
return
}
}
отправка небольших пакетов на часы (не будут отправлять изображения!)
func updateHeartRate(with sample: HKQuantitySample){
let context: [String: Any] = ["title": "String from phone"]
do {
try WCSession.default.updateApplicationContext(context)
} catch {
print("Failed to transmit app context")
}
}
Передача изображений и файлов:
func uploadImage(_ image: UIImage, name: String, title: String = "") {
let data: Data? = UIImagePNGRepresentation(image)
do {
let fileManager = FileManager.default
let documentDirectory = try fileManager.url(for: .cachesDirectory,
in: .userDomainMask,
appropriateFor:nil,
create:true)
let fileURL = try FileManager.fileURL("\(name).png")
if fileManager.fileExists(atPath: fileURL.path) {
try fileManager.removeItem(at: fileURL)
try data?.write(to: fileURL, options: Data.WritingOptions.atomic)
} else {
try data?.write(to: fileURL, options: Data.WritingOptions.atomic)
}
if WCSession.default.activationState != .activated {
print("session not activated")
}
fileTransfer = WCSession.default.transferFile(fileURL, metadata: ["name":name, "title": title])
}
catch {
print(error)
}
print("Completed transfer \(name)")
}