Как создать Apple WatchOS5 усложнение? - PullRequest
0 голосов
/ 27 сентября 2018

Я никогда не работал в WatchOS5 и хочу разработать горизонтальное усложнение (большое модульное) для AppleWatch, например, «ЧСС».Идея состоит в том, что я бы отображал данные о частоте сердечных сокращений по-другому.Прямо сейчас я хочу задействовать усложнение в разработке.

Я создал новый проект с добавленным флажком «усложнение».Я вижу, что это добавило контроллер сложностей с заполнителями конфигурации временной шкалы.

Есть также раскадровка с кучей пустых экранов.Я не уверен, сколько усилий мне нужно приложить к приложению Apple Watch, прежде чем я смогу его развернуть.Я вижу этот Apple doc, но в нем не описывается, как оформить мою сложность.Кажется, в некоторых разделах отсутствуют ссылки.

  • Могу ли я предоставить только один стиль усложнения (большой горизонтальный - большой модульный)
  • Нужно ли предоставлять какой-либо контент приложения iPhone, кроме управлениялогика усложнения, или я могу уйти, не имея контроллера представления?
  • Контролирую ли я внешний вид сложности, добавляя что-то в папку ресурсов (в ней есть несколько графических слотов)?

Извините за полноценный начинающий проект, я не видел проекта, ориентированного конкретно на горизонтальное усложнение для часовой ОС 5

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Вот пример от 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)")
}
0 голосов
/ 27 сентября 2018

Вы должны иметь возможность развернуть его немедленно, хотя он ничего не сделает.Посмотрите видео wwdc, объясняющее, как создать усложнение: видео

Вы не можете самостоятельно разметить сложность, вы можете выбрать один из набора шаблонов, которые вы заполняете данными.Экраны, которые вы видите, предназначены для вашего часового приложения, а не для сложности.

Вам не нужно поддерживать все стили усложнения.

Логика усложнения является частью вашего расширения WatchKit, так что технически вам ничего не нужно в приложении-компаньоне для iOS, яхотя вы не знаете, сколько функций вы должны предоставить, чтобы пройти обзор приложения.

Добавление графики в каталог ресурсов ничего не даст, вы должны ссылаться на них при настройке шаблонов.

...