diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java index 1f5ed6a38..d6043c150 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java @@ -1330,6 +1330,16 @@ public void getAndTrackDeepLink(@NonNull String uri, @NonNull IterableHelper.Ite IterableDeeplinkManager.getAndTrackDeeplink(uri, onCallback); } + /** + * Checks if a URL is an Iterable deep link (rewritten by Iterable) + * + * @param url The URL string to check + * @return true if the URL matches the Iterable deep link pattern + */ + public static boolean isIterableDeeplink(@Nullable String url) { + return IterableDeeplinkManager.isIterableDeeplink(url); + } + /** * Handles an App Link * For Iterable links, it will track the click and retrieve the original URL, pass it to diff --git a/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiDeeplinkUnitTest.java b/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiDeeplinkUnitTest.java new file mode 100644 index 000000000..ce305a437 --- /dev/null +++ b/iterableapi/src/test/java/com/iterable/iterableapi/IterableApiDeeplinkUnitTest.java @@ -0,0 +1,38 @@ +package com.iterable.iterableapi; + +import com.iterable.iterableapi.unit.TestRunner; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +@RunWith(TestRunner.class) +public class IterableApiDeeplinkUnitTest { + + @Test + public void testIsIterableDeeplinkReturnsTrueForValidDeeplink() { + assertTrue(IterableApi.isIterableDeeplink("https://links.iterable.com/a/abc123")); + } + + @Test + public void testIsIterableDeeplinkReturnsFalseForNonRewriteLink() { + assertFalse(IterableApi.isIterableDeeplink("https://links.iterable.com/u/60402396fbd5433eb35397b47ab2fb83")); + } + + @Test + public void testIsIterableDeeplinkReturnsFalseForNonIterableLink() { + assertFalse(IterableApi.isIterableDeeplink("https://example.com/some/path")); + } + + @Test + public void testIsIterableDeeplinkReturnsFalseForNull() { + assertFalse(IterableApi.isIterableDeeplink(null)); + } + + @Test + public void testIsIterableDeeplinkReturnsFalseForEmptyString() { + assertFalse(IterableApi.isIterableDeeplink("")); + } +}