chore: adopt source-available license and strengthen privacy disclosures
Replace MIT with a restrictive source-available license and align README/docs copy. Add cloud polish acknowledgment, privacy manifest updates, voice history disclosure, export compliance metadata, and support links for App Store readiness.
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
// HostAppLauncher.swift
|
||||
// OSGKeyboard · Keyboard Extension
|
||||
//
|
||||
// Opens the host app via URL using every extension-safe strategy:
|
||||
// Opens the host app via URL using extension-safe strategies:
|
||||
// 1. `extensionContext.open` (official)
|
||||
// 2. Responder-chain `UIApplication.open` (TypeWhisper pattern)
|
||||
// 3. `sharedApplication` KVC fallback (common in full-access keyboards)
|
||||
|
||||
import UIKit
|
||||
|
||||
@@ -22,23 +21,12 @@ enum HostAppLauncher {
|
||||
completion(true)
|
||||
return
|
||||
}
|
||||
completion(openViaFallback(url, from: controller))
|
||||
completion(openViaResponderChain(url, from: controller))
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
completion(openViaFallback(url, from: controller))
|
||||
}
|
||||
|
||||
@MainActor
|
||||
private static func openViaFallback(
|
||||
_ url: URL,
|
||||
from controller: KeyboardViewController
|
||||
) -> Bool {
|
||||
if openViaResponderChain(url, from: controller) {
|
||||
return true
|
||||
}
|
||||
return openViaSharedApplication(url)
|
||||
completion(openViaResponderChain(url, from: controller))
|
||||
}
|
||||
|
||||
@MainActor
|
||||
@@ -56,15 +44,4 @@ enum HostAppLauncher {
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
@MainActor
|
||||
private static func openViaSharedApplication(_ url: URL) -> Bool {
|
||||
guard
|
||||
let application = UIApplication.value(forKeyPath: "sharedApplication") as? UIApplication
|
||||
else {
|
||||
return false
|
||||
}
|
||||
application.open(url, options: [:]) { _ in }
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user