kanno927 commited on
Commit
afdbffc
·
1 Parent(s): 0142add

feature(#103): create simple chat watch app

Browse files
WatchApp/WatchApp Watch App/Assets.xcassets/AccentColor.colorset/Contents.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "colors" : [
3
+ {
4
+ "idiom" : "universal"
5
+ }
6
+ ],
7
+ "info" : {
8
+ "author" : "xcode",
9
+ "version" : 1
10
+ }
11
+ }
WatchApp/WatchApp Watch App/Assets.xcassets/AppIcon.appiconset/Contents.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "images" : [
3
+ {
4
+ "idiom" : "universal",
5
+ "platform" : "watchos",
6
+ "size" : "1024x1024"
7
+ }
8
+ ],
9
+ "info" : {
10
+ "author" : "xcode",
11
+ "version" : 1
12
+ }
13
+ }
WatchApp/WatchApp Watch App/Assets.xcassets/Contents.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "info" : {
3
+ "author" : "xcode",
4
+ "version" : 1
5
+ }
6
+ }
WatchApp/WatchApp Watch App/ContentView.swift ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //
2
+ // ContentView.swift
3
+ // WatchApp Watch App
4
+ //
5
+ // Created by DarkHorse on 6/28/23.
6
+ //
7
+
8
+ import SwiftUI
9
+
10
+ struct ChatMessage: Hashable {
11
+ let message: String
12
+ let isUser: Bool
13
+ }
14
+
15
+ struct ChatBubble: Shape {
16
+ let isUser: Bool
17
+
18
+ func path(in rect: CGRect) -> Path {
19
+ let path = UIBezierPath(roundedRect: rect,
20
+ byRoundingCorners: [.topLeft, .topRight, isUser ? .bottomLeft : .bottomRight],
21
+ cornerRadii: CGSize(width: 10, height: 10))
22
+ return Path(path.cgPath)
23
+ }
24
+ }
25
+
26
+ struct ContentView: View {
27
+ @State private var messages: [ChatMessage] = []
28
+ @State private var newMessage = ""
29
+
30
+ var body: some View {
31
+ VStack {
32
+ List {
33
+ ForEach(messages, id: \.self) { message in
34
+ HStack {
35
+ if message.isUser {
36
+ Spacer()
37
+ Text(message.message)
38
+ .foregroundColor(.white)
39
+ .padding(10)
40
+ .background(Color.blue)
41
+ .clipShape(ChatBubble(isUser: message.isUser))
42
+ } else {
43
+ Text(message.message)
44
+ .foregroundColor(.white)
45
+ .padding(10)
46
+ .background(Color.gray)
47
+ .clipShape(ChatBubble(isUser: message.isUser))
48
+ Spacer()
49
+ }
50
+ }
51
+ }
52
+ }
53
+
54
+ HStack {
55
+ TextField("Message...", text: $newMessage)
56
+ Button(action: {
57
+ let userMessage = ChatMessage(message: newMessage, isUser: true)
58
+ messages.append(userMessage)
59
+ newMessage = ""
60
+ }) {
61
+ Text("Send")
62
+ }
63
+ }
64
+ .padding()
65
+ }
66
+ }
67
+ }
68
+
69
+ struct ContentView_Previews: PreviewProvider {
70
+ static var previews: some View {
71
+ ContentView()
72
+ }
73
+ }
WatchApp/WatchApp Watch App/Preview Content/Preview Assets.xcassets/Contents.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "info" : {
3
+ "author" : "xcode",
4
+ "version" : 1
5
+ }
6
+ }
WatchApp/WatchApp Watch App/WatchAppApp.swift ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //
2
+ // WatchAppApp.swift
3
+ // WatchApp Watch App
4
+ //
5
+ // Created by DarkHorse on 6/28/23.
6
+ //
7
+
8
+ import SwiftUI
9
+
10
+ @main
11
+ struct WatchApp_Watch_AppApp: App {
12
+ var body: some Scene {
13
+ WindowGroup {
14
+ ContentView()
15
+ }
16
+ }
17
+ }
WatchApp/WatchApp Watch AppTests/WatchApp_Watch_AppTests.swift ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //
2
+ // WatchApp_Watch_AppTests.swift
3
+ // WatchApp Watch AppTests
4
+ //
5
+ // Created by DarkHorse on 6/28/23.
6
+ //
7
+
8
+ import XCTest
9
+ @testable import WatchApp_Watch_App
10
+
11
+ final class WatchApp_Watch_AppTests: XCTestCase {
12
+
13
+ override func setUpWithError() throws {
14
+ // Put setup code here. This method is called before the invocation of each test method in the class.
15
+ }
16
+
17
+ override func tearDownWithError() throws {
18
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
19
+ }
20
+
21
+ func testExample() throws {
22
+ // This is an example of a functional test case.
23
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
24
+ // Any test you write for XCTest can be annotated as throws and async.
25
+ // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
26
+ // Tests marked async will run the test method on an arbitrary thread managed by the Swift runtime.
27
+ }
28
+
29
+ func testPerformanceExample() throws {
30
+ // This is an example of a performance test case.
31
+ self.measure {
32
+ // Put the code you want to measure the time of here.
33
+ }
34
+ }
35
+
36
+ }
WatchApp/WatchApp Watch AppUITests/WatchApp_Watch_AppUITests.swift ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //
2
+ // WatchApp_Watch_AppUITests.swift
3
+ // WatchApp Watch AppUITests
4
+ //
5
+ // Created by DarkHorse on 6/28/23.
6
+ //
7
+
8
+ import XCTest
9
+
10
+ final class WatchApp_Watch_AppUITests: XCTestCase {
11
+
12
+ override func setUpWithError() throws {
13
+ // Put setup code here. This method is called before the invocation of each test method in the class.
14
+
15
+ // In UI tests it is usually best to stop immediately when a failure occurs.
16
+ continueAfterFailure = false
17
+
18
+ // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
19
+ }
20
+
21
+ override func tearDownWithError() throws {
22
+ // Put teardown code here. This method is called after the invocation of each test method in the class.
23
+ }
24
+
25
+ func testExample() throws {
26
+ // UI tests must launch the application that they test.
27
+ let app = XCUIApplication()
28
+ app.launch()
29
+
30
+ // Use XCTAssert and related functions to verify your tests produce the correct results.
31
+ }
32
+
33
+ func testLaunchPerformance() throws {
34
+ if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
35
+ // This measures how long it takes to launch your application.
36
+ measure(metrics: [XCTApplicationLaunchMetric()]) {
37
+ XCUIApplication().launch()
38
+ }
39
+ }
40
+ }
41
+ }
WatchApp/WatchApp Watch AppUITests/WatchApp_Watch_AppUITestsLaunchTests.swift ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //
2
+ // WatchApp_Watch_AppUITestsLaunchTests.swift
3
+ // WatchApp Watch AppUITests
4
+ //
5
+ // Created by DarkHorse on 6/28/23.
6
+ //
7
+
8
+ import XCTest
9
+
10
+ final class WatchApp_Watch_AppUITestsLaunchTests: XCTestCase {
11
+
12
+ override class var runsForEachTargetApplicationUIConfiguration: Bool {
13
+ true
14
+ }
15
+
16
+ override func setUpWithError() throws {
17
+ continueAfterFailure = false
18
+ }
19
+
20
+ func testLaunch() throws {
21
+ let app = XCUIApplication()
22
+ app.launch()
23
+
24
+ // Insert steps here to perform after app launch but before taking a screenshot,
25
+ // such as logging into a test account or navigating somewhere in the app
26
+
27
+ let attachment = XCTAttachment(screenshot: app.screenshot())
28
+ attachment.name = "Launch Screen"
29
+ attachment.lifetime = .keepAlways
30
+ add(attachment)
31
+ }
32
+ }
WatchApp/WatchApp.xcodeproj/project.pbxproj ADDED
@@ -0,0 +1,685 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 56;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ FE56FAE22A4C5810008410B4 /* WatchApp Watch App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = FE56FAE12A4C5810008410B4 /* WatchApp Watch App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
11
+ FE56FAE72A4C5810008410B4 /* WatchAppApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE56FAE62A4C5810008410B4 /* WatchAppApp.swift */; };
12
+ FE56FAE92A4C5810008410B4 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE56FAE82A4C5810008410B4 /* ContentView.swift */; };
13
+ FE56FAEB2A4C5814008410B4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FE56FAEA2A4C5814008410B4 /* Assets.xcassets */; };
14
+ FE56FAEE2A4C5814008410B4 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FE56FAED2A4C5814008410B4 /* Preview Assets.xcassets */; };
15
+ FE56FAF82A4C5814008410B4 /* WatchApp_Watch_AppTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE56FAF72A4C5814008410B4 /* WatchApp_Watch_AppTests.swift */; };
16
+ FE56FB022A4C5814008410B4 /* WatchApp_Watch_AppUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE56FB012A4C5814008410B4 /* WatchApp_Watch_AppUITests.swift */; };
17
+ FE56FB042A4C5814008410B4 /* WatchApp_Watch_AppUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE56FB032A4C5814008410B4 /* WatchApp_Watch_AppUITestsLaunchTests.swift */; };
18
+ /* End PBXBuildFile section */
19
+
20
+ /* Begin PBXContainerItemProxy section */
21
+ FE56FAE32A4C5810008410B4 /* PBXContainerItemProxy */ = {
22
+ isa = PBXContainerItemProxy;
23
+ containerPortal = FE56FAD52A4C580F008410B4 /* Project object */;
24
+ proxyType = 1;
25
+ remoteGlobalIDString = FE56FAE02A4C5810008410B4;
26
+ remoteInfo = "WatchApp Watch App";
27
+ };
28
+ FE56FAF42A4C5814008410B4 /* PBXContainerItemProxy */ = {
29
+ isa = PBXContainerItemProxy;
30
+ containerPortal = FE56FAD52A4C580F008410B4 /* Project object */;
31
+ proxyType = 1;
32
+ remoteGlobalIDString = FE56FAE02A4C5810008410B4;
33
+ remoteInfo = "WatchApp Watch App";
34
+ };
35
+ FE56FAFE2A4C5814008410B4 /* PBXContainerItemProxy */ = {
36
+ isa = PBXContainerItemProxy;
37
+ containerPortal = FE56FAD52A4C580F008410B4 /* Project object */;
38
+ proxyType = 1;
39
+ remoteGlobalIDString = FE56FAE02A4C5810008410B4;
40
+ remoteInfo = "WatchApp Watch App";
41
+ };
42
+ /* End PBXContainerItemProxy section */
43
+
44
+ /* Begin PBXCopyFilesBuildPhase section */
45
+ FE56FB0A2A4C5814008410B4 /* Embed Watch Content */ = {
46
+ isa = PBXCopyFilesBuildPhase;
47
+ buildActionMask = 2147483647;
48
+ dstPath = "$(CONTENTS_FOLDER_PATH)/Watch";
49
+ dstSubfolderSpec = 16;
50
+ files = (
51
+ FE56FAE22A4C5810008410B4 /* WatchApp Watch App.app in Embed Watch Content */,
52
+ );
53
+ name = "Embed Watch Content";
54
+ runOnlyForDeploymentPostprocessing = 0;
55
+ };
56
+ /* End PBXCopyFilesBuildPhase section */
57
+
58
+ /* Begin PBXFileReference section */
59
+ FE56FADB2A4C5810008410B4 /* WatchApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WatchApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
60
+ FE56FAE12A4C5810008410B4 /* WatchApp Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "WatchApp Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; };
61
+ FE56FAE62A4C5810008410B4 /* WatchAppApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchAppApp.swift; sourceTree = "<group>"; };
62
+ FE56FAE82A4C5810008410B4 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
63
+ FE56FAEA2A4C5814008410B4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
64
+ FE56FAED2A4C5814008410B4 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
65
+ FE56FAF32A4C5814008410B4 /* WatchApp Watch AppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "WatchApp Watch AppTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
66
+ FE56FAF72A4C5814008410B4 /* WatchApp_Watch_AppTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchApp_Watch_AppTests.swift; sourceTree = "<group>"; };
67
+ FE56FAFD2A4C5814008410B4 /* WatchApp Watch AppUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "WatchApp Watch AppUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
68
+ FE56FB012A4C5814008410B4 /* WatchApp_Watch_AppUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchApp_Watch_AppUITests.swift; sourceTree = "<group>"; };
69
+ FE56FB032A4C5814008410B4 /* WatchApp_Watch_AppUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchApp_Watch_AppUITestsLaunchTests.swift; sourceTree = "<group>"; };
70
+ /* End PBXFileReference section */
71
+
72
+ /* Begin PBXFrameworksBuildPhase section */
73
+ FE56FADE2A4C5810008410B4 /* Frameworks */ = {
74
+ isa = PBXFrameworksBuildPhase;
75
+ buildActionMask = 2147483647;
76
+ files = (
77
+ );
78
+ runOnlyForDeploymentPostprocessing = 0;
79
+ };
80
+ FE56FAF02A4C5814008410B4 /* Frameworks */ = {
81
+ isa = PBXFrameworksBuildPhase;
82
+ buildActionMask = 2147483647;
83
+ files = (
84
+ );
85
+ runOnlyForDeploymentPostprocessing = 0;
86
+ };
87
+ FE56FAFA2A4C5814008410B4 /* Frameworks */ = {
88
+ isa = PBXFrameworksBuildPhase;
89
+ buildActionMask = 2147483647;
90
+ files = (
91
+ );
92
+ runOnlyForDeploymentPostprocessing = 0;
93
+ };
94
+ /* End PBXFrameworksBuildPhase section */
95
+
96
+ /* Begin PBXGroup section */
97
+ FE56FAD42A4C580F008410B4 = {
98
+ isa = PBXGroup;
99
+ children = (
100
+ FE56FAE52A4C5810008410B4 /* WatchApp Watch App */,
101
+ FE56FAF62A4C5814008410B4 /* WatchApp Watch AppTests */,
102
+ FE56FB002A4C5814008410B4 /* WatchApp Watch AppUITests */,
103
+ FE56FADC2A4C5810008410B4 /* Products */,
104
+ );
105
+ sourceTree = "<group>";
106
+ };
107
+ FE56FADC2A4C5810008410B4 /* Products */ = {
108
+ isa = PBXGroup;
109
+ children = (
110
+ FE56FADB2A4C5810008410B4 /* WatchApp.app */,
111
+ FE56FAE12A4C5810008410B4 /* WatchApp Watch App.app */,
112
+ FE56FAF32A4C5814008410B4 /* WatchApp Watch AppTests.xctest */,
113
+ FE56FAFD2A4C5814008410B4 /* WatchApp Watch AppUITests.xctest */,
114
+ );
115
+ name = Products;
116
+ sourceTree = "<group>";
117
+ };
118
+ FE56FAE52A4C5810008410B4 /* WatchApp Watch App */ = {
119
+ isa = PBXGroup;
120
+ children = (
121
+ FE56FAE62A4C5810008410B4 /* WatchAppApp.swift */,
122
+ FE56FAE82A4C5810008410B4 /* ContentView.swift */,
123
+ FE56FAEA2A4C5814008410B4 /* Assets.xcassets */,
124
+ FE56FAEC2A4C5814008410B4 /* Preview Content */,
125
+ );
126
+ path = "WatchApp Watch App";
127
+ sourceTree = "<group>";
128
+ };
129
+ FE56FAEC2A4C5814008410B4 /* Preview Content */ = {
130
+ isa = PBXGroup;
131
+ children = (
132
+ FE56FAED2A4C5814008410B4 /* Preview Assets.xcassets */,
133
+ );
134
+ path = "Preview Content";
135
+ sourceTree = "<group>";
136
+ };
137
+ FE56FAF62A4C5814008410B4 /* WatchApp Watch AppTests */ = {
138
+ isa = PBXGroup;
139
+ children = (
140
+ FE56FAF72A4C5814008410B4 /* WatchApp_Watch_AppTests.swift */,
141
+ );
142
+ path = "WatchApp Watch AppTests";
143
+ sourceTree = "<group>";
144
+ };
145
+ FE56FB002A4C5814008410B4 /* WatchApp Watch AppUITests */ = {
146
+ isa = PBXGroup;
147
+ children = (
148
+ FE56FB012A4C5814008410B4 /* WatchApp_Watch_AppUITests.swift */,
149
+ FE56FB032A4C5814008410B4 /* WatchApp_Watch_AppUITestsLaunchTests.swift */,
150
+ );
151
+ path = "WatchApp Watch AppUITests";
152
+ sourceTree = "<group>";
153
+ };
154
+ /* End PBXGroup section */
155
+
156
+ /* Begin PBXNativeTarget section */
157
+ FE56FADA2A4C5810008410B4 /* WatchApp */ = {
158
+ isa = PBXNativeTarget;
159
+ buildConfigurationList = FE56FB0B2A4C5814008410B4 /* Build configuration list for PBXNativeTarget "WatchApp" */;
160
+ buildPhases = (
161
+ FE56FAD92A4C5810008410B4 /* Resources */,
162
+ FE56FB0A2A4C5814008410B4 /* Embed Watch Content */,
163
+ );
164
+ buildRules = (
165
+ );
166
+ dependencies = (
167
+ FE56FAE42A4C5810008410B4 /* PBXTargetDependency */,
168
+ );
169
+ name = WatchApp;
170
+ productName = WatchApp;
171
+ productReference = FE56FADB2A4C5810008410B4 /* WatchApp.app */;
172
+ productType = "com.apple.product-type.application.watchapp2-container";
173
+ };
174
+ FE56FAE02A4C5810008410B4 /* WatchApp Watch App */ = {
175
+ isa = PBXNativeTarget;
176
+ buildConfigurationList = FE56FB072A4C5814008410B4 /* Build configuration list for PBXNativeTarget "WatchApp Watch App" */;
177
+ buildPhases = (
178
+ FE56FADD2A4C5810008410B4 /* Sources */,
179
+ FE56FADE2A4C5810008410B4 /* Frameworks */,
180
+ FE56FADF2A4C5810008410B4 /* Resources */,
181
+ );
182
+ buildRules = (
183
+ );
184
+ dependencies = (
185
+ );
186
+ name = "WatchApp Watch App";
187
+ productName = "WatchApp Watch App";
188
+ productReference = FE56FAE12A4C5810008410B4 /* WatchApp Watch App.app */;
189
+ productType = "com.apple.product-type.application";
190
+ };
191
+ FE56FAF22A4C5814008410B4 /* WatchApp Watch AppTests */ = {
192
+ isa = PBXNativeTarget;
193
+ buildConfigurationList = FE56FB0E2A4C5814008410B4 /* Build configuration list for PBXNativeTarget "WatchApp Watch AppTests" */;
194
+ buildPhases = (
195
+ FE56FAEF2A4C5814008410B4 /* Sources */,
196
+ FE56FAF02A4C5814008410B4 /* Frameworks */,
197
+ FE56FAF12A4C5814008410B4 /* Resources */,
198
+ );
199
+ buildRules = (
200
+ );
201
+ dependencies = (
202
+ FE56FAF52A4C5814008410B4 /* PBXTargetDependency */,
203
+ );
204
+ name = "WatchApp Watch AppTests";
205
+ productName = "WatchApp Watch AppTests";
206
+ productReference = FE56FAF32A4C5814008410B4 /* WatchApp Watch AppTests.xctest */;
207
+ productType = "com.apple.product-type.bundle.unit-test";
208
+ };
209
+ FE56FAFC2A4C5814008410B4 /* WatchApp Watch AppUITests */ = {
210
+ isa = PBXNativeTarget;
211
+ buildConfigurationList = FE56FB112A4C5814008410B4 /* Build configuration list for PBXNativeTarget "WatchApp Watch AppUITests" */;
212
+ buildPhases = (
213
+ FE56FAF92A4C5814008410B4 /* Sources */,
214
+ FE56FAFA2A4C5814008410B4 /* Frameworks */,
215
+ FE56FAFB2A4C5814008410B4 /* Resources */,
216
+ );
217
+ buildRules = (
218
+ );
219
+ dependencies = (
220
+ FE56FAFF2A4C5814008410B4 /* PBXTargetDependency */,
221
+ );
222
+ name = "WatchApp Watch AppUITests";
223
+ productName = "WatchApp Watch AppUITests";
224
+ productReference = FE56FAFD2A4C5814008410B4 /* WatchApp Watch AppUITests.xctest */;
225
+ productType = "com.apple.product-type.bundle.ui-testing";
226
+ };
227
+ /* End PBXNativeTarget section */
228
+
229
+ /* Begin PBXProject section */
230
+ FE56FAD52A4C580F008410B4 /* Project object */ = {
231
+ isa = PBXProject;
232
+ attributes = {
233
+ BuildIndependentTargetsInParallel = 1;
234
+ LastSwiftUpdateCheck = 1430;
235
+ LastUpgradeCheck = 1430;
236
+ TargetAttributes = {
237
+ FE56FADA2A4C5810008410B4 = {
238
+ CreatedOnToolsVersion = 14.3.1;
239
+ };
240
+ FE56FAE02A4C5810008410B4 = {
241
+ CreatedOnToolsVersion = 14.3.1;
242
+ };
243
+ FE56FAF22A4C5814008410B4 = {
244
+ CreatedOnToolsVersion = 14.3.1;
245
+ TestTargetID = FE56FAE02A4C5810008410B4;
246
+ };
247
+ FE56FAFC2A4C5814008410B4 = {
248
+ CreatedOnToolsVersion = 14.3.1;
249
+ TestTargetID = FE56FAE02A4C5810008410B4;
250
+ };
251
+ };
252
+ };
253
+ buildConfigurationList = FE56FAD82A4C580F008410B4 /* Build configuration list for PBXProject "WatchApp" */;
254
+ compatibilityVersion = "Xcode 14.0";
255
+ developmentRegion = en;
256
+ hasScannedForEncodings = 0;
257
+ knownRegions = (
258
+ en,
259
+ Base,
260
+ );
261
+ mainGroup = FE56FAD42A4C580F008410B4;
262
+ productRefGroup = FE56FADC2A4C5810008410B4 /* Products */;
263
+ projectDirPath = "";
264
+ projectRoot = "";
265
+ targets = (
266
+ FE56FADA2A4C5810008410B4 /* WatchApp */,
267
+ FE56FAE02A4C5810008410B4 /* WatchApp Watch App */,
268
+ FE56FAF22A4C5814008410B4 /* WatchApp Watch AppTests */,
269
+ FE56FAFC2A4C5814008410B4 /* WatchApp Watch AppUITests */,
270
+ );
271
+ };
272
+ /* End PBXProject section */
273
+
274
+ /* Begin PBXResourcesBuildPhase section */
275
+ FE56FAD92A4C5810008410B4 /* Resources */ = {
276
+ isa = PBXResourcesBuildPhase;
277
+ buildActionMask = 2147483647;
278
+ files = (
279
+ );
280
+ runOnlyForDeploymentPostprocessing = 0;
281
+ };
282
+ FE56FADF2A4C5810008410B4 /* Resources */ = {
283
+ isa = PBXResourcesBuildPhase;
284
+ buildActionMask = 2147483647;
285
+ files = (
286
+ FE56FAEE2A4C5814008410B4 /* Preview Assets.xcassets in Resources */,
287
+ FE56FAEB2A4C5814008410B4 /* Assets.xcassets in Resources */,
288
+ );
289
+ runOnlyForDeploymentPostprocessing = 0;
290
+ };
291
+ FE56FAF12A4C5814008410B4 /* Resources */ = {
292
+ isa = PBXResourcesBuildPhase;
293
+ buildActionMask = 2147483647;
294
+ files = (
295
+ );
296
+ runOnlyForDeploymentPostprocessing = 0;
297
+ };
298
+ FE56FAFB2A4C5814008410B4 /* Resources */ = {
299
+ isa = PBXResourcesBuildPhase;
300
+ buildActionMask = 2147483647;
301
+ files = (
302
+ );
303
+ runOnlyForDeploymentPostprocessing = 0;
304
+ };
305
+ /* End PBXResourcesBuildPhase section */
306
+
307
+ /* Begin PBXSourcesBuildPhase section */
308
+ FE56FADD2A4C5810008410B4 /* Sources */ = {
309
+ isa = PBXSourcesBuildPhase;
310
+ buildActionMask = 2147483647;
311
+ files = (
312
+ FE56FAE92A4C5810008410B4 /* ContentView.swift in Sources */,
313
+ FE56FAE72A4C5810008410B4 /* WatchAppApp.swift in Sources */,
314
+ );
315
+ runOnlyForDeploymentPostprocessing = 0;
316
+ };
317
+ FE56FAEF2A4C5814008410B4 /* Sources */ = {
318
+ isa = PBXSourcesBuildPhase;
319
+ buildActionMask = 2147483647;
320
+ files = (
321
+ FE56FAF82A4C5814008410B4 /* WatchApp_Watch_AppTests.swift in Sources */,
322
+ );
323
+ runOnlyForDeploymentPostprocessing = 0;
324
+ };
325
+ FE56FAF92A4C5814008410B4 /* Sources */ = {
326
+ isa = PBXSourcesBuildPhase;
327
+ buildActionMask = 2147483647;
328
+ files = (
329
+ FE56FB042A4C5814008410B4 /* WatchApp_Watch_AppUITestsLaunchTests.swift in Sources */,
330
+ FE56FB022A4C5814008410B4 /* WatchApp_Watch_AppUITests.swift in Sources */,
331
+ );
332
+ runOnlyForDeploymentPostprocessing = 0;
333
+ };
334
+ /* End PBXSourcesBuildPhase section */
335
+
336
+ /* Begin PBXTargetDependency section */
337
+ FE56FAE42A4C5810008410B4 /* PBXTargetDependency */ = {
338
+ isa = PBXTargetDependency;
339
+ target = FE56FAE02A4C5810008410B4 /* WatchApp Watch App */;
340
+ targetProxy = FE56FAE32A4C5810008410B4 /* PBXContainerItemProxy */;
341
+ };
342
+ FE56FAF52A4C5814008410B4 /* PBXTargetDependency */ = {
343
+ isa = PBXTargetDependency;
344
+ target = FE56FAE02A4C5810008410B4 /* WatchApp Watch App */;
345
+ targetProxy = FE56FAF42A4C5814008410B4 /* PBXContainerItemProxy */;
346
+ };
347
+ FE56FAFF2A4C5814008410B4 /* PBXTargetDependency */ = {
348
+ isa = PBXTargetDependency;
349
+ target = FE56FAE02A4C5810008410B4 /* WatchApp Watch App */;
350
+ targetProxy = FE56FAFE2A4C5814008410B4 /* PBXContainerItemProxy */;
351
+ };
352
+ /* End PBXTargetDependency section */
353
+
354
+ /* Begin XCBuildConfiguration section */
355
+ FE56FB052A4C5814008410B4 /* Debug */ = {
356
+ isa = XCBuildConfiguration;
357
+ buildSettings = {
358
+ ALWAYS_SEARCH_USER_PATHS = NO;
359
+ CLANG_ANALYZER_NONNULL = YES;
360
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
361
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
362
+ CLANG_ENABLE_MODULES = YES;
363
+ CLANG_ENABLE_OBJC_ARC = YES;
364
+ CLANG_ENABLE_OBJC_WEAK = YES;
365
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
366
+ CLANG_WARN_BOOL_CONVERSION = YES;
367
+ CLANG_WARN_COMMA = YES;
368
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
369
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
370
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
371
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
372
+ CLANG_WARN_EMPTY_BODY = YES;
373
+ CLANG_WARN_ENUM_CONVERSION = YES;
374
+ CLANG_WARN_INFINITE_RECURSION = YES;
375
+ CLANG_WARN_INT_CONVERSION = YES;
376
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
377
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
378
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
379
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
380
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
381
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
382
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
383
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
384
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
385
+ CLANG_WARN_UNREACHABLE_CODE = YES;
386
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
387
+ COPY_PHASE_STRIP = NO;
388
+ DEBUG_INFORMATION_FORMAT = dwarf;
389
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
390
+ ENABLE_TESTABILITY = YES;
391
+ GCC_C_LANGUAGE_STANDARD = gnu11;
392
+ GCC_DYNAMIC_NO_PIC = NO;
393
+ GCC_NO_COMMON_BLOCKS = YES;
394
+ GCC_OPTIMIZATION_LEVEL = 0;
395
+ GCC_PREPROCESSOR_DEFINITIONS = (
396
+ "DEBUG=1",
397
+ "$(inherited)",
398
+ );
399
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
400
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
401
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
402
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
403
+ GCC_WARN_UNUSED_FUNCTION = YES;
404
+ GCC_WARN_UNUSED_VARIABLE = YES;
405
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
406
+ MTL_FAST_MATH = YES;
407
+ ONLY_ACTIVE_ARCH = YES;
408
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
409
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
410
+ };
411
+ name = Debug;
412
+ };
413
+ FE56FB062A4C5814008410B4 /* Release */ = {
414
+ isa = XCBuildConfiguration;
415
+ buildSettings = {
416
+ ALWAYS_SEARCH_USER_PATHS = NO;
417
+ CLANG_ANALYZER_NONNULL = YES;
418
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
419
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
420
+ CLANG_ENABLE_MODULES = YES;
421
+ CLANG_ENABLE_OBJC_ARC = YES;
422
+ CLANG_ENABLE_OBJC_WEAK = YES;
423
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
424
+ CLANG_WARN_BOOL_CONVERSION = YES;
425
+ CLANG_WARN_COMMA = YES;
426
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
427
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
428
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
429
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
430
+ CLANG_WARN_EMPTY_BODY = YES;
431
+ CLANG_WARN_ENUM_CONVERSION = YES;
432
+ CLANG_WARN_INFINITE_RECURSION = YES;
433
+ CLANG_WARN_INT_CONVERSION = YES;
434
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
435
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
436
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
437
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
438
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
439
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
440
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
441
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
442
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
443
+ CLANG_WARN_UNREACHABLE_CODE = YES;
444
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
445
+ COPY_PHASE_STRIP = NO;
446
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
447
+ ENABLE_NS_ASSERTIONS = NO;
448
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
449
+ GCC_C_LANGUAGE_STANDARD = gnu11;
450
+ GCC_NO_COMMON_BLOCKS = YES;
451
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
452
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
453
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
454
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
455
+ GCC_WARN_UNUSED_FUNCTION = YES;
456
+ GCC_WARN_UNUSED_VARIABLE = YES;
457
+ MTL_ENABLE_DEBUG_INFO = NO;
458
+ MTL_FAST_MATH = YES;
459
+ SWIFT_COMPILATION_MODE = wholemodule;
460
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
461
+ };
462
+ name = Release;
463
+ };
464
+ FE56FB082A4C5814008410B4 /* Debug */ = {
465
+ isa = XCBuildConfiguration;
466
+ buildSettings = {
467
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
468
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
469
+ CODE_SIGN_STYLE = Automatic;
470
+ CURRENT_PROJECT_VERSION = 1;
471
+ DEVELOPMENT_ASSET_PATHS = "\"WatchApp Watch App/Preview Content\"";
472
+ ENABLE_PREVIEWS = YES;
473
+ GENERATE_INFOPLIST_FILE = YES;
474
+ INFOPLIST_KEY_CFBundleDisplayName = WatchApp;
475
+ INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
476
+ INFOPLIST_KEY_WKWatchOnly = YES;
477
+ LD_RUNPATH_SEARCH_PATHS = (
478
+ "$(inherited)",
479
+ "@executable_path/Frameworks",
480
+ );
481
+ MARKETING_VERSION = 1.0;
482
+ PRODUCT_BUNDLE_IDENTIFIER = com.risingland.WatchApp.watchkitapp;
483
+ PRODUCT_NAME = "$(TARGET_NAME)";
484
+ SDKROOT = watchos;
485
+ SKIP_INSTALL = YES;
486
+ SWIFT_EMIT_LOC_STRINGS = YES;
487
+ SWIFT_VERSION = 5.0;
488
+ TARGETED_DEVICE_FAMILY = 4;
489
+ WATCHOS_DEPLOYMENT_TARGET = 9.4;
490
+ };
491
+ name = Debug;
492
+ };
493
+ FE56FB092A4C5814008410B4 /* Release */ = {
494
+ isa = XCBuildConfiguration;
495
+ buildSettings = {
496
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
497
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
498
+ CODE_SIGN_STYLE = Automatic;
499
+ CURRENT_PROJECT_VERSION = 1;
500
+ DEVELOPMENT_ASSET_PATHS = "\"WatchApp Watch App/Preview Content\"";
501
+ ENABLE_PREVIEWS = YES;
502
+ GENERATE_INFOPLIST_FILE = YES;
503
+ INFOPLIST_KEY_CFBundleDisplayName = WatchApp;
504
+ INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
505
+ INFOPLIST_KEY_WKWatchOnly = YES;
506
+ LD_RUNPATH_SEARCH_PATHS = (
507
+ "$(inherited)",
508
+ "@executable_path/Frameworks",
509
+ );
510
+ MARKETING_VERSION = 1.0;
511
+ PRODUCT_BUNDLE_IDENTIFIER = com.risingland.WatchApp.watchkitapp;
512
+ PRODUCT_NAME = "$(TARGET_NAME)";
513
+ SDKROOT = watchos;
514
+ SKIP_INSTALL = YES;
515
+ SWIFT_EMIT_LOC_STRINGS = YES;
516
+ SWIFT_VERSION = 5.0;
517
+ TARGETED_DEVICE_FAMILY = 4;
518
+ VALIDATE_PRODUCT = YES;
519
+ WATCHOS_DEPLOYMENT_TARGET = 9.4;
520
+ };
521
+ name = Release;
522
+ };
523
+ FE56FB0C2A4C5814008410B4 /* Debug */ = {
524
+ isa = XCBuildConfiguration;
525
+ buildSettings = {
526
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
527
+ CODE_SIGN_STYLE = Automatic;
528
+ CURRENT_PROJECT_VERSION = 1;
529
+ INFOPLIST_KEY_CFBundleDisplayName = WatchApp;
530
+ MARKETING_VERSION = 1.0;
531
+ PRODUCT_BUNDLE_IDENTIFIER = com.risingland.WatchApp;
532
+ PRODUCT_NAME = "$(TARGET_NAME)";
533
+ SDKROOT = iphoneos;
534
+ SWIFT_VERSION = 5.0;
535
+ };
536
+ name = Debug;
537
+ };
538
+ FE56FB0D2A4C5814008410B4 /* Release */ = {
539
+ isa = XCBuildConfiguration;
540
+ buildSettings = {
541
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
542
+ CODE_SIGN_STYLE = Automatic;
543
+ CURRENT_PROJECT_VERSION = 1;
544
+ INFOPLIST_KEY_CFBundleDisplayName = WatchApp;
545
+ MARKETING_VERSION = 1.0;
546
+ PRODUCT_BUNDLE_IDENTIFIER = com.risingland.WatchApp;
547
+ PRODUCT_NAME = "$(TARGET_NAME)";
548
+ SDKROOT = iphoneos;
549
+ SWIFT_VERSION = 5.0;
550
+ VALIDATE_PRODUCT = YES;
551
+ };
552
+ name = Release;
553
+ };
554
+ FE56FB0F2A4C5814008410B4 /* Debug */ = {
555
+ isa = XCBuildConfiguration;
556
+ buildSettings = {
557
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
558
+ BUNDLE_LOADER = "$(TEST_HOST)";
559
+ CODE_SIGN_STYLE = Automatic;
560
+ CURRENT_PROJECT_VERSION = 1;
561
+ GENERATE_INFOPLIST_FILE = YES;
562
+ MARKETING_VERSION = 1.0;
563
+ PRODUCT_BUNDLE_IDENTIFIER = "com.risingland.WatchApp-Watch-AppTests";
564
+ PRODUCT_NAME = "$(TARGET_NAME)";
565
+ SDKROOT = watchos;
566
+ SWIFT_EMIT_LOC_STRINGS = NO;
567
+ SWIFT_VERSION = 5.0;
568
+ TARGETED_DEVICE_FAMILY = 4;
569
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WatchApp Watch App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/WatchApp Watch App";
570
+ WATCHOS_DEPLOYMENT_TARGET = 9.4;
571
+ };
572
+ name = Debug;
573
+ };
574
+ FE56FB102A4C5814008410B4 /* Release */ = {
575
+ isa = XCBuildConfiguration;
576
+ buildSettings = {
577
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
578
+ BUNDLE_LOADER = "$(TEST_HOST)";
579
+ CODE_SIGN_STYLE = Automatic;
580
+ CURRENT_PROJECT_VERSION = 1;
581
+ GENERATE_INFOPLIST_FILE = YES;
582
+ MARKETING_VERSION = 1.0;
583
+ PRODUCT_BUNDLE_IDENTIFIER = "com.risingland.WatchApp-Watch-AppTests";
584
+ PRODUCT_NAME = "$(TARGET_NAME)";
585
+ SDKROOT = watchos;
586
+ SWIFT_EMIT_LOC_STRINGS = NO;
587
+ SWIFT_VERSION = 5.0;
588
+ TARGETED_DEVICE_FAMILY = 4;
589
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WatchApp Watch App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/WatchApp Watch App";
590
+ VALIDATE_PRODUCT = YES;
591
+ WATCHOS_DEPLOYMENT_TARGET = 9.4;
592
+ };
593
+ name = Release;
594
+ };
595
+ FE56FB122A4C5814008410B4 /* Debug */ = {
596
+ isa = XCBuildConfiguration;
597
+ buildSettings = {
598
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
599
+ CODE_SIGN_STYLE = Automatic;
600
+ CURRENT_PROJECT_VERSION = 1;
601
+ GENERATE_INFOPLIST_FILE = YES;
602
+ MARKETING_VERSION = 1.0;
603
+ PRODUCT_BUNDLE_IDENTIFIER = "com.risingland.WatchApp-Watch-AppUITests";
604
+ PRODUCT_NAME = "$(TARGET_NAME)";
605
+ SDKROOT = watchos;
606
+ SWIFT_EMIT_LOC_STRINGS = NO;
607
+ SWIFT_VERSION = 5.0;
608
+ TARGETED_DEVICE_FAMILY = 4;
609
+ TEST_TARGET_NAME = "WatchApp Watch App";
610
+ WATCHOS_DEPLOYMENT_TARGET = 9.4;
611
+ };
612
+ name = Debug;
613
+ };
614
+ FE56FB132A4C5814008410B4 /* Release */ = {
615
+ isa = XCBuildConfiguration;
616
+ buildSettings = {
617
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
618
+ CODE_SIGN_STYLE = Automatic;
619
+ CURRENT_PROJECT_VERSION = 1;
620
+ GENERATE_INFOPLIST_FILE = YES;
621
+ MARKETING_VERSION = 1.0;
622
+ PRODUCT_BUNDLE_IDENTIFIER = "com.risingland.WatchApp-Watch-AppUITests";
623
+ PRODUCT_NAME = "$(TARGET_NAME)";
624
+ SDKROOT = watchos;
625
+ SWIFT_EMIT_LOC_STRINGS = NO;
626
+ SWIFT_VERSION = 5.0;
627
+ TARGETED_DEVICE_FAMILY = 4;
628
+ TEST_TARGET_NAME = "WatchApp Watch App";
629
+ VALIDATE_PRODUCT = YES;
630
+ WATCHOS_DEPLOYMENT_TARGET = 9.4;
631
+ };
632
+ name = Release;
633
+ };
634
+ /* End XCBuildConfiguration section */
635
+
636
+ /* Begin XCConfigurationList section */
637
+ FE56FAD82A4C580F008410B4 /* Build configuration list for PBXProject "WatchApp" */ = {
638
+ isa = XCConfigurationList;
639
+ buildConfigurations = (
640
+ FE56FB052A4C5814008410B4 /* Debug */,
641
+ FE56FB062A4C5814008410B4 /* Release */,
642
+ );
643
+ defaultConfigurationIsVisible = 0;
644
+ defaultConfigurationName = Release;
645
+ };
646
+ FE56FB072A4C5814008410B4 /* Build configuration list for PBXNativeTarget "WatchApp Watch App" */ = {
647
+ isa = XCConfigurationList;
648
+ buildConfigurations = (
649
+ FE56FB082A4C5814008410B4 /* Debug */,
650
+ FE56FB092A4C5814008410B4 /* Release */,
651
+ );
652
+ defaultConfigurationIsVisible = 0;
653
+ defaultConfigurationName = Release;
654
+ };
655
+ FE56FB0B2A4C5814008410B4 /* Build configuration list for PBXNativeTarget "WatchApp" */ = {
656
+ isa = XCConfigurationList;
657
+ buildConfigurations = (
658
+ FE56FB0C2A4C5814008410B4 /* Debug */,
659
+ FE56FB0D2A4C5814008410B4 /* Release */,
660
+ );
661
+ defaultConfigurationIsVisible = 0;
662
+ defaultConfigurationName = Release;
663
+ };
664
+ FE56FB0E2A4C5814008410B4 /* Build configuration list for PBXNativeTarget "WatchApp Watch AppTests" */ = {
665
+ isa = XCConfigurationList;
666
+ buildConfigurations = (
667
+ FE56FB0F2A4C5814008410B4 /* Debug */,
668
+ FE56FB102A4C5814008410B4 /* Release */,
669
+ );
670
+ defaultConfigurationIsVisible = 0;
671
+ defaultConfigurationName = Release;
672
+ };
673
+ FE56FB112A4C5814008410B4 /* Build configuration list for PBXNativeTarget "WatchApp Watch AppUITests" */ = {
674
+ isa = XCConfigurationList;
675
+ buildConfigurations = (
676
+ FE56FB122A4C5814008410B4 /* Debug */,
677
+ FE56FB132A4C5814008410B4 /* Release */,
678
+ );
679
+ defaultConfigurationIsVisible = 0;
680
+ defaultConfigurationName = Release;
681
+ };
682
+ /* End XCConfigurationList section */
683
+ };
684
+ rootObject = FE56FAD52A4C580F008410B4 /* Project object */;
685
+ }
WatchApp/WatchApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Workspace
3
+ version = "1.0">
4
+ <FileRef
5
+ location = "self:">
6
+ </FileRef>
7
+ </Workspace>
WatchApp/WatchApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>IDEDidComputeMac32BitWarning</key>
6
+ <true/>
7
+ </dict>
8
+ </plist>
WatchApp/WatchApp.xcodeproj/project.xcworkspace/xcuserdata/darkhorse.xcuserdatad/UserInterfaceState.xcuserstate ADDED
Binary file (15 kB). View file
 
WatchApp/WatchApp.xcodeproj/xcuserdata/darkhorse.xcuserdatad/xcschemes/xcschememanagement.plist ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>SchemeUserState</key>
6
+ <dict>
7
+ <key>WatchApp Watch App.xcscheme_^#shared#^_</key>
8
+ <dict>
9
+ <key>orderHint</key>
10
+ <integer>0</integer>
11
+ </dict>
12
+ </dict>
13
+ </dict>
14
+ </plist>