User Reach Strategies in JD Finance App: SMS, Push, In‑App Banners, and Widgets
This article explains the JD Finance team's practical approaches to user reach—including SMS, push notifications, in‑app banners, and Android widgets—detailing implementation steps, common issues, and troubleshooting methods to improve activation, retention, and conversion rates.
User reach, defined as delivering messages to users through various channels, is a core product‑operation technique that influences acquisition, activation, retention, and monetization.
Why implement user reach : From the user perspective, timely system notifications (e.g., verification codes, repayment reminders) are essential; from the product side, targeted marketing messages drive activity and conversion.
1. SMS Reach : Although instant‑messaging apps have supplanted SMS for personal communication, SMS remains reliable for verification codes, repayment alerts, and marketing notices. The main challenge is linking SMS URLs directly to native app pages, which is solved via Android App Links. The workflow includes adding an intent‑filter with android:autoVerify="true" , publishing an assetlinks.json file, and handling the deep link in the target activity.
[ { "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "xxx.xxx.xx", "sha256_cert_fingerprints": ["xx:xx...."] } } ]
2. Push Notifications : JD Finance integrates multiple vendor push services (Huawei, Xiaomi, OPPO, Vivo, etc.) with a self‑built channel. Issues such as personalization, channel classification, and device compatibility are addressed by using RegID, Alias, and tag‑based targeting, and by configuring notification channels on Android 8.0+.
3. In‑App Banner (Horizontal Bar) : Implemented via a long‑connected MQTT channel, the banner delivers real‑time messages with high click‑through rates. The architecture includes data service, transmission (MQTT), app capability layer, data parsing, and view control, enabling global or page‑specific display, multi‑banner handling, and fallback strategies.
4. Android AppWidget (Desktop Widget) : The article outlines the creation steps—defining AppWidgetProvider , configuring AppWidgetProviderInfo , designing RemoteViews layouts, handling configuration activities, and managing click events. Code examples show image loading with Glide and rounded‑corner transformations.
AppWidgetTarget appWidgetTarget = new AppWidgetTarget(context, ivViewId, views, mAppWidgetIds); RequestOptions option = new RequestOptions() .transform(new MultiTransformation<>(new CenterCrop(), new RoundedCorners(connerPX))); GlideApp.with(context) .asBitmap() .load(bgUrl) .apply(option) .diskCacheStrategy(DiskCacheStrategy.NONE) .into(appWidgetTarget);
Problem‑solving highlights include verifying digital‑asset links, handling device‑specific notification‑switch states (OPPO, Vivo), preventing duplicate push clicks via LruCache, and managing widget update frequency to balance resource usage and real‑time needs.
In conclusion, the JD Finance team shares practical experiences and solutions for SMS, push, in‑app banners, and widgets, offering guidance for engineers and product managers aiming to build efficient, user‑centric reach mechanisms.
JD Tech Talk
Official JD Tech public account delivering best practices and technology innovation.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.