I am having problems adding Swift applications to a watch face. I thought it was my App, so I took the default App created by Xcode (Hello World) and I get the same problem. Using Xcode 14.3.1 and Watch OS 9.5.2. I can get the App to run on the watch by the standard method of attaching cable from MacBook to iPhone and the App appears on the phone and in the Dock and runs just fine. But when I go to add the App to a screen face as a complication, it won't be found in the list of Apps.
Complications cannot be added to watch screen
Can you elaborate more about the actual complications that you created? You've described launching the watchOS app, but you haven't described creating a WidgetKit extension for that app, what complication families you support, or any other complication-related details. https://developer.apple.com/documentation/widgetkit
When I last worked on watchOS complications over a year ago, storyboards were allowed. Back then you just created your application/complication and they ran fine on the watch and could be easily added to the watch face. Now that I have gotten back to watchOS without the storyboard, using only Swift, I just created my app, ran it on the simulator and then on the watch (via the cables to the iPhone) and it worked just fine on the watch. I have never seen anything about a WidgetKit extension or a complication family. If those are needed to make the complication be available to be added to the watch, please direct me to the documentation where this additional requirement is located.
Here is the contents of my ContentView.swift file that I am trying to add to the watch face (this is just the default app created when you choose to create a WatchOS app), but it doesn't show up in the list to be added.
import SwiftUI
struct ContentView: View { var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundColor(.accentColor) Text("Hello, world!") } .padding() } }
struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() }