diff --git a/README.md b/README.md index 08c26b5..b749765 100644 --- a/README.md +++ b/README.md @@ -182,8 +182,12 @@ UXCam.addScreenNamesToIgnore(listOf("LoginScreen", "SettingsScreen")) | `optOutOfSchematicRecordings()` | Opt out of schematic recordings (iOS only) | | `optIntoSchematicRecordings()` | Opt into schematic recordings (iOS only) | | `optInSchematicRecordingStatus()` | Check schematic recording status (iOS only) | +| `occludeSensitiveView(view)` | Hide sensitive view from recordings | +| `unOccludeSensitiveView(view)` | Remove occlusion from a view | | `addScreenNameToIgnore(screenName)` | Exclude screen from recording | | `addScreenNamesToIgnore(screenNames)` | Exclude multiple screens | +| `removeScreenNameToIgnore(screenName)` | Remove screen from ignore list | +| `removeAllScreenNamesToIgnore()` | Clear all ignored screens | | `allowShortBreakForAnotherApp(b)` | Allow short app switches | ### UXConfig diff --git a/uxcam-kmp-shared/src/androidMain/kotlin/dev/onexeor/uxcam/UXCam.kt b/uxcam-kmp-shared/src/androidMain/kotlin/dev/onexeor/uxcam/UXCam.kt index daf3df6..961fbf1 100644 --- a/uxcam-kmp-shared/src/androidMain/kotlin/dev/onexeor/uxcam/UXCam.kt +++ b/uxcam-kmp-shared/src/androidMain/kotlin/dev/onexeor/uxcam/UXCam.kt @@ -2,6 +2,7 @@ package dev.onexeor.uxcam +import android.view.View import com.uxcam.OnVerificationListener import com.uxcam.UXCam import com.uxcam.datamodel.UXConfig @@ -38,6 +39,14 @@ actual object UXCam { UXCam.tagScreenName(screenName) } + actual fun occludeSensitiveView(view: Any) { + (view as? View)?.let { UXCam.occludeSensitiveView(it) } + } + + actual fun unOccludeSensitiveView(view: Any) { + (view as? View)?.let { UXCam.unOccludeSensitiveView(it) } + } + actual fun addScreenNameToIgnore(screenName: String) { UXCam.addScreenNameToIgnore(screenName) } @@ -46,6 +55,14 @@ actual object UXCam { UXCam.addScreenNamesToIgnore(screenNames) } + actual fun removeScreenNameToIgnore(screenName: String) { + UXCam.removeScreenNameToIgnore(screenName) + } + + actual fun removeAllScreenNamesToIgnore() { + UXCam.removeAllScreenNamesToIgnore() + } + actual fun allowShortBreakForAnotherApp(b: Boolean) { UXCam.allowShortBreakForAnotherApp(b) } diff --git a/uxcam-kmp-shared/src/commonMain/kotlin/dev/onexeor/uxcam/UXCam.kt b/uxcam-kmp-shared/src/commonMain/kotlin/dev/onexeor/uxcam/UXCam.kt index 7eca0c1..d4889c0 100644 --- a/uxcam-kmp-shared/src/commonMain/kotlin/dev/onexeor/uxcam/UXCam.kt +++ b/uxcam-kmp-shared/src/commonMain/kotlin/dev/onexeor/uxcam/UXCam.kt @@ -12,10 +12,26 @@ expect object UXCam { fun tagScreenName(screenName: String) + /** + * Marks a view as sensitive to be hidden from recordings. + * @param view Platform-specific view: Android View or iOS UIView + */ + fun occludeSensitiveView(view: Any) + + /** + * Removes occlusion from a previously occluded view. + * @param view Platform-specific view: Android View or iOS UIView + */ + fun unOccludeSensitiveView(view: Any) + fun addScreenNameToIgnore(screenName: String) fun addScreenNamesToIgnore(screenNames: List) + fun removeScreenNameToIgnore(screenName: String) + + fun removeAllScreenNamesToIgnore() + fun allowShortBreakForAnotherApp(b: Boolean) fun pauseScreenRecording() diff --git a/uxcam-kmp-shared/src/iosMain/kotlin/dev/onexeor/uxcam/UXCam.kt b/uxcam-kmp-shared/src/iosMain/kotlin/dev/onexeor/uxcam/UXCam.kt index 0a5c0ae..ee7180e 100644 --- a/uxcam-kmp-shared/src/iosMain/kotlin/dev/onexeor/uxcam/UXCam.kt +++ b/uxcam-kmp-shared/src/iosMain/kotlin/dev/onexeor/uxcam/UXCam.kt @@ -5,6 +5,7 @@ package dev.onexeor.uxcam import cocoapods.UXCam.UXCam import cocoapods.UXCam.UXCamConfiguration +import platform.UIKit.UIView actual object UXCam { @@ -28,6 +29,14 @@ actual object UXCam { UXCam.tagScreenName(screenName) } + actual fun occludeSensitiveView(view: Any) { + (view as? UIView)?.let { UXCam.occludeSensitiveView(it) } + } + + actual fun unOccludeSensitiveView(view: Any) { + (view as? UIView)?.let { UXCam.unOccludeSensitiveView(it) } + } + actual fun addScreenNameToIgnore(screenName: String) { UXCam.addScreenNameToIgnore(screenName) } @@ -36,6 +45,14 @@ actual object UXCam { UXCam.addScreenNamesToIgnore(screenNames) } + actual fun removeScreenNameToIgnore(screenName: String) { + UXCam.removeScreenNameToIgnore(screenName) + } + + actual fun removeAllScreenNamesToIgnore() { + UXCam.removeAllScreenNamesToIgnore() + } + actual fun allowShortBreakForAnotherApp(b: Boolean) { UXCam.allowShortBreakForAnotherApp(b) }