Skip to content

Commit e6d4fea

Browse files
committed
address review comments
1 parent 83e9e33 commit e6d4fea

16 files changed

+137
-120
lines changed

HostApp/HostApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

HostApp/HostApp/Model/LivenessResult.swift

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ struct LivenessResult: Codable {
1212
let auditImageBytes: String?
1313
let confidenceScore: Double
1414
let isLive: Bool
15-
let challenge: Challenge?
15+
let challenge: Event?
1616
}
1717

1818
extension LivenessResult: CustomDebugStringConvertible {
@@ -22,8 +22,17 @@ extension LivenessResult: CustomDebugStringConvertible {
2222
- confidenceScore: \(confidenceScore)
2323
- isLive: \(isLive)
2424
- auditImageBytes: \(auditImageBytes == nil ? "nil" : "<placeholder>")
25-
- challengeType: \(String(describing: challenge?.type))
26-
- challengeVersion: \(String(describing: challenge?.version))
25+
- challenge: type: \(String(describing: challenge?.type)) + " version: " + \(String(describing: challenge?.version))
2726
"""
2827
}
2928
}
29+
30+
struct Event: Codable {
31+
let version: String
32+
let type: ChallengeType
33+
34+
enum CodingKeys: String, CodingKey {
35+
case version = "Version"
36+
case type = "Type"
37+
}
38+
}

HostApp/HostApp/Views/LivenessResultContentView+Result.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ extension LivenessResultContentView {
1616
let valueBackgroundColor: Color
1717
let auditImage: Data?
1818
let isLive: Bool
19-
let challenge: Challenge?
19+
let challenge: Event?
2020

2121
init(livenessResult: LivenessResult) {
2222
guard livenessResult.confidenceScore > 0 else {

HostApp/HostApp/Views/StartSessionView.swift

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ struct StartSessionView: View {
2626
)
2727

2828
button(
29-
text: "Create Liveness Session (front camera)",
29+
text: "Create Liveness Session",
3030
backgroundColor: .dynamicColors(
3131
light: .hex("#047D95"),
3232
dark: .hex("#7dd6e8")
@@ -35,6 +35,7 @@ struct StartSessionView: View {
3535
viewModel.createSession { sessionId, err in
3636
if let sessionId = sessionId {
3737
sessionID = sessionId
38+
// modify camera preference for `FaceMovementChallenge`
3839
containerViewState = .liveness(.front)
3940
}
4041

@@ -55,37 +56,6 @@ struct StartSessionView: View {
5556
)
5657
)
5758
}
58-
59-
button(
60-
text: "Create Liveness Session (back camera)",
61-
backgroundColor: .dynamicColors(
62-
light: .hex("#047D95"),
63-
dark: .hex("#7dd6e8")
64-
),
65-
action: {
66-
viewModel.createSession { sessionId, err in
67-
if let sessionId = sessionId {
68-
sessionID = sessionId
69-
containerViewState = .liveness(.back)
70-
}
71-
72-
showAlert = err != nil
73-
}
74-
},
75-
enabled: viewModel.isSignedIn
76-
)
77-
.alert(isPresented: $showAlert) {
78-
Alert(
79-
title: Text("Error Creating Liveness Session"),
80-
message: Text("Unable to create a liveness session id. Please try again."),
81-
dismissButton: .default(
82-
Text("OK"),
83-
action: {
84-
containerViewState = .startSession
85-
}
86-
)
87-
)
88-
}
8959

9060
Spacer()
9161
HStack {

Package.resolved

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Sources/FaceLiveness/FaceDetection/BlazeFace/FaceDetectorShortRange+Model.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,14 +114,19 @@ extension FaceDetectorShortRange {
114114

115115
let blazeFaceDetectionThreshold: Float
116116
if let sessionConfiguration = faceDetectionSessionConfiguration?.sessionConfiguration {
117-
blazeFaceDetectionThreshold = Float(sessionConfiguration.ovalMatchChallenge.faceDetectionThreshold)
117+
switch sessionConfiguration {
118+
case .faceMovement(let ovalMatchChallenge):
119+
blazeFaceDetectionThreshold = Float(ovalMatchChallenge.faceDetectionThreshold)
120+
case .faceMovementAndLight(_, let ovalMatchChallenge):
121+
blazeFaceDetectionThreshold = Float(ovalMatchChallenge.faceDetectionThreshold)
122+
}
118123
} else {
119124
blazeFaceDetectionThreshold = confidenceScoreThreshold
120125
}
121126

122127
var passingConfidenceScoresIndices = confidenceScores
123128
.enumerated()
124-
.filter { $0.element >= blazeFaceDetectionThreshold}
129+
.filter { $0.element >= blazeFaceDetectionThreshold}
125130
.sorted(by: {
126131
$0.element > $1.element
127132
})

Sources/FaceLiveness/Utilities/FinalClientEvent+Init.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,14 @@ extension FinalClientEvent {
1717
faceMatchedEnd: UInt64,
1818
videoEnd: UInt64
1919
) {
20-
let normalizedBoundingBox = sessionConfiguration
21-
.ovalMatchChallenge
20+
let ovalMatchChallenge: FaceLivenessSession.OvalMatchChallenge
21+
switch sessionConfiguration {
22+
case .faceMovement(let challenge):
23+
ovalMatchChallenge = challenge
24+
case .faceMovementAndLight(_, let challenge):
25+
ovalMatchChallenge = challenge
26+
}
27+
let normalizedBoundingBox = ovalMatchChallenge
2228
.oval.boundingBox
2329
.normalize(within: videoSize)
2430

Sources/FaceLiveness/Views/CameraPermission/CameraPermissionView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ struct CameraPermissionView: View {
1717
}
1818

1919
var body: some View {
20-
VStack(alignment: .leading) {
20+
VStack(alignment: .center) {
2121
Spacer()
2222
VStack {
2323
Text(LocalizedStrings.camera_permission_change_setting_header)

Sources/FaceLiveness/Views/GetReadyPage/GetReadyPageView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ struct GetReadyPageView: View {
3737
popoverContent: { photosensitivityWarningPopoverContent }
3838
)
3939
.accessibilityElement(children: .combine)
40-
.opacity(challenge.type == .faceMovementAndLightChallenge ? 1.0 : 0.0)
40+
.opacity(challenge == Challenge.faceMovementAndLightChallenge("2.0.0") ? 1.0 : 0.0)
4141
Text(LocalizedStrings.preview_center_your_face_text)
4242
.font(.title)
4343
.multilineTextAlignment(.center)
@@ -82,7 +82,7 @@ struct GetReadyPageView_Previews: PreviewProvider {
8282
static var previews: some View {
8383
GetReadyPageView(
8484
onBegin: {},
85-
challenge: .init(version: "2.0.0", type: .faceMovementAndLightChallenge),
85+
challenge: .faceMovementAndLightChallenge("2.0.0"),
8686
cameraPosition: .front)
8787
}
8888
}

Sources/FaceLiveness/Views/Instruction/InstructionContainerView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ struct InstructionContainerView: View {
111111
}
112112
case .faceMatched:
113113
if let challenge = viewModel.challengeReceived,
114-
case .faceMovementAndLightChallenge = challenge.type {
114+
case .faceMovementAndLightChallenge = challenge {
115115
InstructionView(
116116
text: LocalizedStrings.challenge_instruction_hold_still,
117117
backgroundColor: .livenessPrimaryBackground,

0 commit comments

Comments
 (0)