diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 33e6b4cb839..4b5e0c6e9a9 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -92,6 +92,9 @@
+
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 806da384537..3ba7f5e0a72 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
Edge
+ Contact Support
diff --git a/android/app/src/main/res/xml/shortcuts.xml b/android/app/src/main/res/xml/shortcuts.xml
new file mode 100644
index 00000000000..430ba845c96
--- /dev/null
+++ b/android/app/src/main/res/xml/shortcuts.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
diff --git a/ios/edge/AppDelegate.swift b/ios/edge/AppDelegate.swift
index 9483d70d2ba..d107c63289d 100644
--- a/ios/edge/AppDelegate.swift
+++ b/ios/edge/AppDelegate.swift
@@ -11,6 +11,7 @@ import UserNotifications
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var securityView: UIView?
+ private var pendingShortcutItem: UIApplicationShortcutItem?
var reactNativeDelegate: ReactNativeDelegate?
var reactNativeFactory: RCTReactNativeFactory?
@@ -49,6 +50,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil
) -> Bool {
+ if let shortcutItem = launchOptions?[.shortcutItem] as? UIApplicationShortcutItem {
+ pendingShortcutItem = shortcutItem
+ }
+
// Initialize SDK's:
initializeSentry()
FirebaseApp.configure()
@@ -72,9 +77,28 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
launchOptions: launchOptions
)
+ if let shortcutItem = pendingShortcutItem {
+ _ = handleShortcutItem(shortcutItem)
+ pendingShortcutItem = nil
+ }
+
return true
}
+ func application(
+ _ application: UIApplication,
+ performActionFor shortcutItem: UIApplicationShortcutItem,
+ completionHandler: @escaping (Bool) -> Void
+ ) {
+ let handled = handleShortcutItem(shortcutItem)
+ completionHandler(handled)
+ }
+
+ private func handleShortcutItem(_ shortcutItem: UIApplicationShortcutItem) -> Bool {
+ guard let url = URL(string: shortcutItem.type) else { return false }
+ return RCTLinkingManager.application(UIApplication.shared, open: url, options: [:])
+ }
+
/**
* Periodic background fetch logic.
* Edge addition.
diff --git a/ios/edge/Info.plist b/ios/edge/Info.plist
index 2a9afea9725..cc29dc66360 100644
--- a/ios/edge/Info.plist
+++ b/ios/edge/Info.plist
@@ -57,6 +57,15 @@
CFBundleVersion
99999999
+ UIApplicationShortcutItems
+
+
+ UIApplicationShortcutItemTitle
+ Contact Support
+ UIApplicationShortcutItemType
+ edge://scene/webView?title=Contact%20Support&uri=https%3A%2F%2Fsupport.edge.app%2Fhc%2Fen-us%2Frequests%2Fnew
+
+
LSApplicationQueriesSchemes
https