Skip to content

Commit 98396b6

Browse files
authored
Merge pull request #4757 from wordpress-mobile/feature/track-not-default-handler
Track when not the default WPCOM post URLs handler
2 parents 334b0be + 8902356 commit 98396b6

File tree

6 files changed

+45
-2
lines changed

6 files changed

+45
-2
lines changed

WordPress/src/main/java/org/wordpress/android/ui/main/WPMainActivity.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import android.app.DialogFragment;
55
import android.app.Fragment;
66
import android.content.Intent;
7+
import android.content.pm.PackageManager;
8+
import android.content.pm.ResolveInfo;
9+
import android.net.Uri;
710
import android.os.AsyncTask;
811
import android.os.Build;
912
import android.os.Bundle;
@@ -218,6 +221,12 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse
218221
}
219222
}
220223
startService(new Intent(this, NotificationsScreenLockWatchService.class));
224+
225+
// ensure the deep linking activity is enabled. It may have been disabled elsewhere and failed to get re-enabled
226+
WPActivityUtils.enableComponent(this, ReaderPostPagerActivity.class);
227+
228+
// monitor whether we're not the default app
229+
trackDefaultApp();
221230
}
222231

223232
@Override
@@ -356,7 +365,7 @@ protected void onResume() {
356365

357366
new CheckUnseenNotesTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
358367

359-
// ensure the deep linking activity is enabled. It may have been disabled elsewhere and failed to get re-enabled
368+
// ensure the deep linking activity is enabled. We might be returning from the external-browser viewing of a post
360369
WPActivityUtils.enableComponent(this, ReaderPostPagerActivity.class);
361370

362371
// We need to track the current item on the screen when this activity is resumed.
@@ -437,6 +446,16 @@ private void trackLastVisibleTab(int position, boolean trackAnalytics) {
437446
}
438447
}
439448

449+
private void trackDefaultApp() {
450+
Intent wpcomIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.wordpresscom_sample_post)));
451+
ResolveInfo resolveInfo = getPackageManager().resolveActivity(wpcomIntent, PackageManager.MATCH_DEFAULT_ONLY);
452+
if (resolveInfo != null && !getPackageName().equals(resolveInfo.activityInfo.name)) {
453+
// not set as default handler so, track this to evaluate. Note, a resolver/chooser might be the default.
454+
AnalyticsUtils.trackWithDefaultInterceptor(AnalyticsTracker.Stat.DEEP_LINK_NOT_DEFAULT_HANDER,
455+
resolveInfo.activityInfo.name);
456+
}
457+
}
458+
440459
public void setReaderTabActive() {
441460
if (isFinishing() || mTabLayout == null) return;
442461

WordPress/src/main/java/org/wordpress/android/util/AnalyticsUtils.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public class AnalyticsUtils {
4242
private static String INTENT_ACTION = "intent_action";
4343
private static String INTENT_DATA = "intent_data";
4444
private static String INTERCEPTED_URI = "intercepted_uri";
45+
private static String INTERCEPTOR_CLASSNAME = "interceptor_classname";
4546

4647
/**
4748
* Utility method to refresh mixpanel metadata.
@@ -277,7 +278,21 @@ public static void trackWithInterceptedUri(AnalyticsTracker.Stat stat, String in
277278
AnalyticsTracker.track(stat, properties);
278279
}
279280

280-
/**
281+
/**
282+
* Track when app launched via deep-linking but then fell back to external browser
283+
*
284+
* @param stat The Stat to bump
285+
* @param interceptorClassname The name of the class that handles the intercept by default
286+
*
287+
*/
288+
public static void trackWithDefaultInterceptor(AnalyticsTracker.Stat stat, String interceptorClassname) {
289+
Map<String, Object> properties = new HashMap<>();
290+
properties.put(INTERCEPTOR_CLASSNAME, interceptorClassname);
291+
292+
AnalyticsTracker.track(stat, properties);
293+
}
294+
295+
/**
281296
* Track when a railcar item has been rendered
282297
*
283298
* @param post The JSON string of the railcar

WordPress/src/main/res/values/key_strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,4 +253,6 @@
253253
<string name="asset_statements" translatable="false">
254254
[{\"include\": \"https://wordpress.com/.well-known/assetlinks.json\"}]
255255
</string>
256+
257+
<string name="wordpresscom_sample_post" translatable="false">https://en.blog.wordpress.com/2016/09/26/the-best-of-wordpress-september-2016/</string>
256258
</resources>

libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ public enum Stat {
208208
TRAIN_TRACKS_INTERACT,
209209
DEEP_LINKED,
210210
DEEP_LINKED_FALLBACK,
211+
DEEP_LINK_NOT_DEFAULT_HANDER,
211212
}
212213

213214
private static final List<Tracker> TRACKERS = new ArrayList<>();

libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerMixpanel.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,6 +1186,10 @@ private AnalyticsTrackerMixpanelInstructionsForStat instructionsForStat(
11861186
instructions = AnalyticsTrackerMixpanelInstructionsForStat.
11871187
mixpanelInstructionsForEventName("Deep linked fallback");
11881188
break;
1189+
case DEEP_LINK_NOT_DEFAULT_HANDER:
1190+
instructions = AnalyticsTrackerMixpanelInstructionsForStat.
1191+
mixpanelInstructionsForEventName("Deep link not default handler");
1192+
break;
11891193
default:
11901194
instructions = null;
11911195
break;

libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,8 @@ public static String getEventNameForStat(AnalyticsTracker.Stat stat) {
626626
return "deep_linked";
627627
case DEEP_LINKED_FALLBACK:
628628
return "deep_linked_fallback";
629+
case DEEP_LINK_NOT_DEFAULT_HANDER:
630+
return "deep_link_not_default_handler";
629631
default:
630632
return null;
631633
}

0 commit comments

Comments
 (0)