Skip to content

Commit 0a29e35

Browse files
Support localizedCancelTitle in Capacitor
1 parent 1a89e80 commit 0a29e35

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

packages/authgear-capacitor/ios/Plugin/AuthgearPlugin.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,10 @@ public class AuthgearPlugin: CAPPlugin {
136136
@objc func checkBiometricSupported(_ call: CAPPluginCall) {
137137
let ios = call.getObject("ios")!
138138
let policyString = ios["policy"] as! String
139+
let localizedCancelTitle = ios["localizedCancelTitle"] as? String
139140
DispatchQueue.main.async {
140141
do {
141-
try self.impl.checkBiometricSupported(policyString: policyString)
142+
try self.impl.checkBiometricSupported(policyString: policyString, localizedCancelTitle: localizedCancelTitle)
142143
call.resolve()
143144
} catch {
144145
error.reject(call)
@@ -153,12 +154,14 @@ public class AuthgearPlugin: CAPPlugin {
153154
let constraint = ios["constraint"] as! String
154155
let policyString = ios["policy"] as! String
155156
let localizedReason = ios["localizedReason"] as! String
157+
let localizedCancelTitle = ios["localizedCancelTitle"] as? String
156158
let tag = "com.authgear.keys.biometric.\(kid)"
157159

158160
DispatchQueue.main.async {
159161
self.impl.createBiometricPrivateKey(
160162
policyString: policyString,
161163
localizedReason: localizedReason,
164+
localizedCancelTitle: localizedCancelTitle,
162165
constraint: constraint,
163166
kid: kid,
164167
tag: tag,
@@ -182,12 +185,14 @@ public class AuthgearPlugin: CAPPlugin {
182185
let ios = call.getObject("ios")!
183186
let policyString = ios["policy"] as! String
184187
let localizedReason = ios["localizedReason"] as! String
188+
let localizedCancelTitle = ios["localizedCancelTitle"] as? String
185189
let tag = "com.authgear.keys.biometric.\(kid)"
186190

187191
DispatchQueue.main.async {
188192
self.impl.signWithBiometricPrivateKey(
189193
policyString: policyString,
190194
localizedReason: localizedReason,
195+
localizedCancelTitle: localizedCancelTitle,
191196
kid: kid,
192197
tag: tag,
193198
payload: payload

packages/authgear-capacitor/ios/Plugin/AuthgearPluginImpl.swift

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -250,10 +250,10 @@ import Capacitor
250250
controller?.start()
251251
}
252252

253-
@objc func checkBiometricSupported(policyString: String) throws {
253+
@objc func checkBiometricSupported(policyString: String, localizedCancelTitle: String?) throws {
254254
if #available(iOS 11.3, *) {
255255
let policy = LAPolicy.from(string: policyString)!
256-
let laContext = self.makeLAContext(policy: policy)
256+
let laContext = self.makeLAContext(policy: policy, localizedCancelTitle: localizedCancelTitle)
257257
var error: NSError?
258258
laContext.canEvaluatePolicy(policy, error: &error)
259259
if let error = error {
@@ -267,14 +267,15 @@ import Capacitor
267267
@objc func createBiometricPrivateKey(
268268
policyString: String,
269269
localizedReason: String,
270+
localizedCancelTitle: String?,
270271
constraint: String,
271272
kid: String,
272273
tag: String,
273274
payload: [String: Any],
274275
completion: @escaping (String?, Error?) -> Void
275276
) {
276277
let policy = LAPolicy.from(string: policyString)!
277-
let ctx = makeLAContext(policy: policy)
278+
let ctx = makeLAContext(policy: policy, localizedCancelTitle: localizedCancelTitle)
278279
ctx.evaluatePolicy(policy, localizedReason: localizedReason) { ok, error in
279280
if let error = error {
280281
completion(nil, error)
@@ -296,13 +297,14 @@ import Capacitor
296297
@objc func signWithBiometricPrivateKey(
297298
policyString: String,
298299
localizedReason: String,
300+
localizedCancelTitle: String?,
299301
kid: String,
300302
tag: String,
301303
payload: [String: Any],
302304
completion: @escaping (String?, Error?) -> Void
303305
) {
304306
let policy = LAPolicy.from(string: policyString)!
305-
let ctx = makeLAContext(policy: policy)
307+
let ctx = makeLAContext(policy: policy, localizedCancelTitle: localizedCancelTitle)
306308
ctx.evaluatePolicy(policy, localizedReason: localizedReason) { ok, error in
307309
if let error = error {
308310
completion(nil, error)
@@ -393,11 +395,12 @@ import Capacitor
393395
return window
394396
}
395397

396-
private func makeLAContext(policy: LAPolicy) -> LAContext {
398+
private func makeLAContext(policy: LAPolicy, localizedCancelTitle: String?) -> LAContext {
397399
let ctx = LAContext()
398400
if policy == LAPolicy.deviceOwnerAuthenticationWithBiometrics {
399401
ctx.localizedFallbackTitle = "";
400402
}
403+
ctx.localizedCancelTitle = localizedCancelTitle
401404
return ctx
402405
}
403406

packages/authgear-capacitor/src/types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,11 +277,17 @@ export enum BiometricAccessConstraintIOS {
277277
*/
278278
export interface BiometricOptionsIOS {
279279
/**
280-
* See https://developer.apple.com/documentation/localauthentication/lacontext/1514176-evaluatepolicy#parameters
280+
* See https://developer.apple.com/documentation/localauthentication/lacontext/localizedreason
281281
*
282282
* @public
283283
*/
284284
localizedReason: string;
285+
/**
286+
* See https://developer.apple.com/documentation/localauthentication/lacontext/localizedcanceltitle
287+
*
288+
* @public
289+
*/
290+
localizedCancelTitle?: string;
285291
constraint: BiometricAccessConstraintIOS;
286292
policy: BiometricLAPolicy;
287293
}

0 commit comments

Comments
 (0)