支持推送通知

文件

使用推送通知支持再参与跟踪

Singular 支持推送通知跟踪,以加强再参与测量。通过将 Firebase Cloud Messaging (FCM) 与 Singular SDK 集成,您可以跟踪与推送通知互动的用户,并对其进行相应的归属。

为确保准确跟踪,请遵循以下实施指南,并确保将通知数据正确传递给 Singular SDK。

为什么推送通知跟踪很重要?

推送通知是一种关键的再参与工具,但要对其进行跟踪,需要正确的集成。Singular 可确保与通知互动的用户正确归属,帮助优化营销活动和互动策略。


实施指南

步骤 1:处理 Firebase 云消息(FCM)通知

当你的应用程序收到来自 Firebase 的推送通知时,onMessageReceived() 方法就会被触发。要在 Singular 中跟踪通知,请更新该方法以处理通知数据。

举例说明:

JavaKotlin
@Override
public void onMessageReceived(@NonNull RemoteMessage message) {
    super.onMessageReceived(message);
    String title = "";
    String body = "";

    if (message.getNotification() != null) {
        Log.d("===singular-app", message.getNotification().toString());
        title = message.getNotification().getTitle();
        body = message.getNotification().getBody();
    }

    Map<String, String> data = message.getData(); // Fixed the incorrect Map generic type

    if (!data.isEmpty()) {
        Log.d("===singular-app", data.toString());
    }
    // Implement processNotification method to forward payload data to intent

    processNotification(title, body, data);
}

这样可以确保捕获所有相关的推送数据并转发处理。


步骤 2:处理推送通知并向 Singular 传递数据

收到通知后,将其数据传递给启动主要活动的意图至关重要,在此活动中,Singular 将被初始化。

举个例子:

JavaKotlin
private void processNotification(String title, String body, Map<String, String> data) {
    Intent intent = new Intent(this, MainActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

    // Attach notification data to the intent

    for (Map.Entry<String, String> entry : data.entrySet()) {
        intent.putExtra(entry.getKey(), entry.getValue());
    }

    PendingIntent pendingIntent = PendingIntent.getActivity(
            this, 
            0, 
            intent, 
            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Added FLAG_IMMUTABLE for API 31+

    );

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "your_channel_id")
            .setSmallIcon(R.drawable.info_btn)
            .setContentTitle(title)
            .setContentText(body)
            .setPriority(NotificationCompat.PRIORITY_HIGH) // Optional: Set priority for better visibility

            .setAutoCancel(true)
            .setContentIntent(pendingIntent);

    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    if (notificationManager != null) {
        notificationManager.notify(0, notificationBuilder.build());
    }
}

这样可以确保当用户点击通知时,他们会被引导到具有正确跟踪数据的适当活动。


第 3 步:将推送通知有效载荷与 Singular SDK 集成

最后,更新 Singular SDK 配置,确保推送通知有效载荷得到正确传递和处理。

举例说明:

JavaKotlin
String[][] pushSelectors = {
        {"sng_link"},
        {"rootObj", "nestedObj", "anotherNested", "singularLink"}
};

config.withPushNotificationPayload(intent, pushSelectors);

Singular.init(context, config);

此步骤可确保 Singular 为归因目的正确跟踪推送通知参与情况。


验证指南

步骤 4:在启动会话调用中验证/确认推送通知接收情况

Singular SDK API 调用可确保推送通知有效载荷链接在启动会话调用中的singular_link保留参数下正确传递。

举例说明

https://sdk-api-v1.singular.net/api/v1/start?a=<SDK-Key>&ab=arm64-v8a&aifa=180f63a1-0955-47b4-896a-d75ae3d35955&apc=Marchv7&apg=1&aps=Intex&asid_scope=1&asid_timeinterval=0.112&av=20.0&br=samsung&c=wifi&current_device_time=1740905574088&de=m15x&device_type=phone&device_user_agent=Dalvik/2.1.0 (Linux; U; Android 14; SM-E156B Build/UP1A.231005.007)&dnt=0&event_index=3&fi=e5bRZuVddO8:APA91bHXI3OmFZv3-r8f03zyji2kvKWbIngwf8KBDHk4Rj5q5MEeEm6EtzC-if1vpJRmuYLyGdAcSz9-nc49eIjD86xwj-n9J4jKucqMVt9mP8ICifP0arA&i=net.singular.singularsampleapp&install_time=1740905507036&is=false&k=SDID&lag=0.067&lc=en_IN&ma=samsung&mo=SM-E156B&n=Singular-TestApp-Debug&p=Android&pr=m15xnndins&pu=1&rt=json&s=1740905574084&sdk=Singular/v12.6.2&singular_install_id=2dc5dfc2-a2a8-484a-aad1-fed6cb7a3023&singular_link=https://singularassist2.sng.link/C4nw9/r1m0?_dl=singular://test&_smtype=3&src=com.android.shell&u=75f7b911-5a77-597d-8892-56f5e0e210ff&update_time=1740905507036&v=14&h=1e723fd90344d5d037059f110611ed1d84fbba88


您也可以使用Singular SDK 控制台来验证Deeplink URL 下的推送通知跟踪链接,如下所示。

通过验证,您可以确认 Singular SDK 正确跟踪了推送通知的参与情况。

注意:

  • 请注意,与withSingularLink 处理程序代码不同,Singular SDK 并不为该功能提供推送有效载荷回调。应用程序开发人员有责任读取推送通知数据并实施深度链接逻辑,将用户重定向到应用程序中的特定产品页面。在此解决方案中,Singular 会在用户点击通知时检索推送通知有效载荷,并将此有效载荷包含在由Singular.init() 触发的 SDK 启动会话事件中。然后,Singular 后端将对该数据进行处理,以确定推送通知触摸点/点击的属性,并将其注册用于重新参与跟踪。
  • 我们有一套安全机制,只允许推送通知有效载荷中传递的自定义键值对中的Singular 链接域。具体来说,只允许使用 "奇异管理链接 "页面中预定义的sng.link域。

    例如
    https://prod_test.sng.link/B0s2a/51oi?_dl=singular%3A%2F%2Fmain

    如果要在不同的域(如电子邮件服务提供商的ESP 域)中封装Singular 链接,则必须在设置中添加以下选项,明确配置域:请参考以下配置示例:config.withESPDomains(Arrays.asList("sl.esp.link"));

  • 如果需要根据单个推送通知中的用户操作触发不同的深层链接,可以使用单个 Singular 跟踪链接并动态修改重定向。

    示例

    突发新闻推送通知可能会提供多个深层链接选项!与其创建多个跟踪链接,不如配置一个 Singular 跟踪链接,并根据用户选择动态调整重定向

    阅读最新新闻
    newsapp://article?id=12345
    热门话题
    newsapp://trending
    体育
    newsapp://sports


    了解有关在奇异跟踪链接中覆盖重定向的更多信息

成功!

通过这些步骤,您的应用程序现在已设置为使用 Singular 跟踪推送通知互动。这有助于提高活动性能洞察力,并确保准确的再参与归因。