From 91660530dc10bd518a1cf4a93cda0727e62172bd Mon Sep 17 00:00:00 2001 From: Elliot Mawby Date: Thu, 29 Aug 2024 10:17:43 -0700 Subject: [PATCH 1/2] Make IAM popupWindow focusable This allows the keyboard to be displayed for text input in HTML IAMs --- .../internal/display/impl/InAppMessageView.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/display/impl/InAppMessageView.kt b/OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/display/impl/InAppMessageView.kt index 76392bf2a2..4024c74d98 100644 --- a/OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/display/impl/InAppMessageView.kt +++ b/OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/display/impl/InAppMessageView.kt @@ -104,7 +104,7 @@ internal class InAppMessageView( fun setWebView(webView: WebView) { this.webView = webView - this.webView!!.setBackgroundColor(Color.TRANSPARENT) + this.webView?.setBackgroundColor(Color.TRANSPARENT) } fun setMessageController(messageController: InAppMessageViewListener?) { @@ -277,10 +277,11 @@ internal class InAppMessageView( if (hasBackground) WindowManager.LayoutParams.MATCH_PARENT else WindowManager.LayoutParams.WRAP_CONTENT, false, ) - popupWindow!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) - popupWindow!!.isTouchable = true + popupWindow?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + popupWindow?.isTouchable = true + popupWindow?.isFocusable = true // NOTE: This is required for getting fullscreen under notches working in portrait mode - popupWindow!!.isClippingEnabled = false + popupWindow?.isClippingEnabled = false var gravity = 0 if (!hasBackground) { gravity = @@ -299,7 +300,7 @@ internal class InAppMessageView( popupWindow!!, displayType, ) - popupWindow!!.showAtLocation( + popupWindow?.showAtLocation( currentActivity!!.window.decorView.rootView, gravity, 0, From 8697cb7e73d6c04754cc7e49f4e12b6ab7d3de55 Mon Sep 17 00:00:00 2001 From: Elliot Mawby Date: Thu, 29 Aug 2024 11:25:18 -0700 Subject: [PATCH 2/2] Don't set focusable for banners We want focusable on for non banner IAMs to support keyboard input, but we don't want it on for banners since it restricts interacting with the app underneath the banner --- .../inAppMessages/internal/display/impl/InAppMessageView.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/display/impl/InAppMessageView.kt b/OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/display/impl/InAppMessageView.kt index 4024c74d98..ac3e42150d 100644 --- a/OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/display/impl/InAppMessageView.kt +++ b/OneSignalSDK/onesignal/in-app-messages/src/main/java/com/onesignal/inAppMessages/internal/display/impl/InAppMessageView.kt @@ -279,7 +279,9 @@ internal class InAppMessageView( ) popupWindow?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) popupWindow?.isTouchable = true - popupWindow?.isFocusable = true + // Focusable allows keyboard input for HTML IAMs, but also prevents interacting under banners + popupWindow?.isFocusable = !displayPosition.isBanner + // NOTE: This is required for getting fullscreen under notches working in portrait mode popupWindow?.isClippingEnabled = false var gravity = 0