У меня есть простая сложность для запуска моего приложения с циферблата. Он не показывает никаких данных, просто отображает изображение. Я выполнил добавление осложнений в руководство «Галерея», но мне не удалось добавить свое усложнение в галерею усложнений в приложении iPhone Watch.
public func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) {
guard let tempalte = buildTemplate(for: complication) else {
fatalError("Unsuported Complication Family.")
}
handler(tempalte)
}
// Helper function to build template.
fileprivate func buildTemplate(for complication: CLKComplication) -> CLKComplicationTemplate? {
let textProvider = CLKSimpleTextProvider.localizableTextProvider(withStringsFileTextKey: "Caffeine")
switch complication.family {
case .modularSmall:
let icon = #imageLiteral(resourceName: "Complication/Modular")
let complicationTemplate = CLKComplicationTemplateModularSmallSimpleImage()
complicationTemplate.imageProvider = CLKImageProvider(onePieceImage: icon)
return complicationTemplate
case .circularSmall:
let icon = #imageLiteral(resourceName: "Complication/Circular")
let complicationTemplate = CLKComplicationTemplateCircularSmallSimpleImage()
complicationTemplate.imageProvider = CLKImageProvider(onePieceImage: icon)
return complicationTemplate
case .utilitarianSmall:
let icon = #imageLiteral(resourceName: "Complication/Utilitarian")
let complicationTemplate = CLKComplicationTemplateUtilitarianSmallSquare()
complicationTemplate.imageProvider = CLKImageProvider(onePieceImage: icon)
return complicationTemplate
case .utilitarianLarge:
let icon = #imageLiteral(resourceName: "Complication/Utilitarian")
let complicationTemplate = CLKComplicationTemplateUtilitarianLargeFlat()
complicationTemplate.imageProvider = CLKImageProvider(onePieceImage: icon)
complicationTemplate.textProvider = textProvider
return complicationTemplate
case .utilitarianSmallFlat:
let icon = #imageLiteral(resourceName: "Complication/Utilitarian")
let complicationTemplate = CLKComplicationTemplateUtilitarianSmallFlat()
complicationTemplate.imageProvider = CLKImageProvider(onePieceImage: icon)
complicationTemplate.textProvider = textProvider
return complicationTemplate
case .extraLarge:
let icon = #imageLiteral(resourceName: "Complication/Extra Large")
let complicationTemplate = CLKComplicationTemplateExtraLargeSimpleImage()
complicationTemplate.imageProvider = CLKImageProvider(onePieceImage: icon)
return complicationTemplate
default:
return nil
}
}
файл compplicationManifest.json.
{
"supported complication families" : {
"3" : "B82ADE2C-045D-491D-87DD-C24148804480.json",
"6" : "A332202A-4B7B-49E0-83FB-DB398089E4FE.json",
"4" : "817476CB-1683-4604-A76D-2977236448AD.json",
"2" : "50AB27ED-0FA3-41AD-A3E7-CC9C62E48D82.json",
"0" : "DBE31877-7BB0-4671-B065-6FE00333929E.json",
"7" : "96966B70-AB8D-4DB3-AB64-AFDF1F09EB88.json"
},
"client ID" : "net.borisy.ProductDisplayName.watchkitapp.watchkitextension"
}
Настройки проекта.
Устранение неполадок.
- Пробовал сбросить симуляторы.
- Пробовал и на реальном устройстве и на Симуляторе.
- Пакет усложнений сохранен как «Создать ссылку на папку» путем перетаскивания
gallery.ckcomplication
gallery.ckcomplication
находится в проекте на корневом уровне. Тот же уровень, что и.xcodeproj
.
Обновить.
Я добавил больше кода. Я также добавил ckcomplication.strings
в цель расширения просмотра.
Повторное чтение руководства Apple и следующая строка заставили меня задуматься:
Например, MyBundleName.ckcomplication.
Возможно, мы предполагаем переименовать сгенерированное имя папки gallery в имя пакета. Я пытался это сделать. Пока не повезло.