注意:此文件不適用於神策智能運營(Sensors Focus)

神策智能運營對接請參考這裡

神策分析致力於幫助客戶搭建開放的數據平台,便於客戶更深入的利用數據。本節文件涉及較多技術細節,適用於對相關功能有經驗的用戶參考。如果對文件內容有疑惑,請諮詢您的數據諮詢顧問取得一對一的協助。

App 訊息推播是一種常用的營運手段,國內已有多家公司向 Android 和 iOS 開發者提供推播服務。神策分析1.6 版本中提供了如下的方案,以便使用極光推播小米推播等第三方推播服務的開發者,能夠將神策分析的分析結果同步到推播服務中,以便向定向的人群推播特定的訊息,從而將用戶行為分析能力與推播服務結合,提高App 的營運效果。

開發者將神策分析的結果同步到第三方推播服務的大致步​​驟如下:

  • 開發者在第三方推播平台註冊帳號、增加應用程式;
  • 在 App 中整合神策分析和第三方推播服務:
    • 在 App 整合第三方推播平台的 SDK 和神策分析的 SDK,在 App 中取得第三方推播平台的裝置推播 ID,並將該 ID 保存在神策分析的用戶 Profile 中;
    • 在 App 中處理推播訊息,並使用神策分析追蹤推播結果;
  • 在神策分析中增加推播相關設定,如 AppKey、保存裝置推播 ID 的 Profile 名稱等;
  • 在神策分析中透過用戶分群等功能使用 App 推播。

以下詳細說明如何整合第三方推播服務。

1. 在 iOS 中整合第三方推播系統

1.1. 取得裝置推播 ID

首先,開發者需要在 App 中整合第三方推播系統的 SDK,並在 App 初始化過程中取得裝置推播 ID,並保存在神策分析的用戶 Profile 中。以下簡要說明整合第三方推播系統的整合方式。

1.1.1. 極光推播

開發者請參考極光推播《iOS SDK 文件》,將極光推播的 SDK 整合到 App 中。請參考 神策 iOS SDK 將神策分析 SDK 整合到 App 中。

在 iOS App 中,取得 APNs 的 Device Token 後,需要向極光推播註冊,註冊成功後極光推播會推播 kJPFNetworkDidLoginNotification 通知,開發者需要監聽該通知,並從極光推播中取得 Registration Id:

// 在 App 初始化成功的回呼函數中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *) launchOptions {

	// 初始化極光SDK之後,從極光推播取得 Registration Id
	[JPUSHService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
	if (resCode == 0) {
	// 將極光推播的 Registration Id 儲存在神策分析的用戶 Profile "jgId" 中
	[SensorsAnalyticsSDK.sharedInstance profilePushKey:@"jgId" pushId:registrationID];
	}}];
	}
	// App 成功取得 APNs 的 Device Token
	- (void)application:(UIApplication *)application
	didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

	// 向極光推播註冊 Device Token
	[JPUSHService registerDeviceToken:deviceToken];
}
TEXT

為了保證 Registration Id 能成功綁定到最新的用戶上,需要在登入\切換用戶時,重新綁定 Registration Id。

[[SensorsAnalyticsSDK sharedInstance] login:account];

[JPUSHService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
if (resCode == 0) {
// 將極光推播的 Registration Id 儲存在神策分析的用戶 Profile "jgId" 中
[SensorsAnalyticsSDK.sharedInstance profilePushKey:@"jgId" pushId:registrationID];

}
}];
TEXT

1.1.2. 小米推播

開發者請參考小米推播 iOS SDK 文件,將小米推播的 SDK 整合到 App 中。請參考 iOS SDK 將神策分析 SDK 整合到 App 中。

在 App啟動時註冊小米推播服務,註冊成功後取得 APNs 的 Device Token
,註冊時需要增加 MiPushSDKDelegate 協定。

@interface AppDelegate ()<MiPushSDKDelegate,UNUserNotificationCenterDelegate>

@end
TEXT
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
	//小米 註冊APNS成功, 註冊deviceToken
	[MiPushSDK bindDeviceToken:deviceToken];
}
TEXT


實作 MiPushSDKDelegate 協定中的方法取得 regId

#pragma mark MiPushSDKDelegate
- (void)miPushRequestSuccWithSelector:(NSString *)selector data:(NSDictionary *)data {
	// 請求成功
	// 可在此取得regId
	if ([selector isEqualToString:@"bindDeviceToken:"]) {
		// 將小米推播的regId 儲存在神策分析的用戶 Profile "xmId" 中
		[SensorsAnalyticsSDK.sharedInstance profilePushKey:@"xmId" pushId:data[@"regid"]];
	}
}
TEXT

1.1.3. 個推

請參考個推​​《iOS SDK 文件》,將個推的 SDK 整合到 App 中。開發者需要將 App 的裝置推播 ID 保存在神策分析的用戶 Profile 中。神策分析的用戶分群等分析功能會使用該裝置推播 ID 進行用戶關聯。請參考 iOS SDK 將神策分析 SDK 整合到 App 中。

開發者在 GeTuiSdkDelegate- GeTuiSdkDidRegisterClient: 中取得 clientId 保存在神策分析的用戶 Profile 中:

- (void)GeTuiSdkDidRegisterClient:(NSString *)clientId {
	//將 clientId 保存到用戶表中的 gtId 中
	[SensorsAnalyticsSDK.sharedInstance profilePushKey:@"gtId" pushId:clientId];
}
TEXT

1.2. App 推播效果追蹤

開發者可以使用神策分析追蹤推播效果。當用戶透過點擊推播訊息打開 App 時,透過神策分析 SDK 上報打開推播訊息事件,並透過漏斗分析等功能,將用戶在點擊推播訊息打開 App 前後的行為關聯起來。

您可以在 App 中監聽第三方訊息推播服務的廣播或代理方法,當用戶點擊訊息打開 App 或執行其他行為時,呼叫 track 介面記錄 App 訊息打開事件。

假設 App 打開訊息成功事件的名稱為 AppOpenNotification,中文名稱為 App 打開訊息,包含事件屬性:

  • msg_title - 訊息標題
  • msg_id - 訊息唯一ID

以下簡要介紹如何在 App 中記錄上述 App 打開訊息 事件,追蹤極光推播的推播效果。

1.2.1. 極光推播

根據極光推播文件所述,需要為 AppDelegate 增加 Delegate,程式碼如下:

@interface AppDelegate ()<JPUSHRegisterDelegate>

@end
TEXT


用戶需要在 AppDelegate.m 中實作以下回呼方法並在回呼方法中呼叫神策分析 SDK 追蹤打開訊息的事件。

// iOS 10 Support
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
	// Required
	NSDictionary * userInfo = response.notification.request.content.userInfo;
	if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
		[JPUSHService handleRemoteNotification:userInfo];
	}
	// 用戶點擊通知欄打開訊息,使用神策分析記錄 "App 打開訊息" 事件
	[[SensorsAnalyticsSDK sharedInstance] track:@"AppOpenNotification" 
								 withProperties:@{@"msg_title":[NSString stringWithFormat:@"%@",userInfo[@"aps"][@"alert"]],
												  @"msg_id":[NSString stringWithFormat:@"%@",userInfo[@"_j_msgid"]]}];

	// 直接上報數據
	[[SensorsAnalyticsSDK sharedInstance] flush];
	completionHandler(); // 系統要求執行這個方法
}
// Required, iOS 7 Support
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
	[JPUSHService handleRemoteNotification:userInfo];

	if (application.applicationState == UIApplicationStateActive) {
		// 打開了推播訊息,使用神策分析追蹤 "App 打開訊息" 事件
		[[SensorsAnalyticsSDK sharedInstance] track:@"AppOpenNotification" 
									 withProperties:@{@"msg_title":[NSString stringWithFormat:@"%@",userInfo[@"aps"][@"alert"]],
													  @"msg_id":[NSString stringWithFormat:@"%@",userInfo[@"_j_msgid"]]}];
	} else if (application.applicationState == UIApplicationStateBackground) {
		// 打開了推播訊息,使用神策分析追蹤 "App 打開訊息" 事件
		[[SensorsAnalyticsSDK sharedInstance] track:@"AppOpenNotification" 
									 withProperties:@{@"msg_title":[NSString stringWithFormat:@"%@",userInfo[@"aps"][@"alert"]],
													  @"msg_id":[NSString stringWithFormat:@"%@",userInfo[@"_j_msgid"]]}];
	} else if (application.applicationState == UIApplicationStateInactive) {
		// 用戶點擊通知欄打開訊息,使用神策分析記錄 "App 打開訊息" 事件
	}

	// 直接上報數據
	[[SensorsAnalyticsSDK sharedInstance] flush];
	completionHandler(UIBackgroundFetchResultNewData);
}
TEXT

1.2.2. 小米推播

用戶需要在 AppDelegate.m 中實作以下回呼方法並在回呼方法中呼叫神策分析 SDK 追蹤推播成功的事件。

// iOS 10 Support
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
	// Required
	NSDictionary * userInfo = response.notification.request.content.userInfo;
	if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
		[JPUSHService handleRemoteNotification:userInfo];
	}
	// 用戶點擊通知欄打開訊息,使用神策分析記錄 "App 打開訊息" 事件
	[[SensorsAnalyticsSDK sharedInstance] track:@"AppOpenNotification" withProperties:@{@"msg_title":[NSString stringWithFormat:@"%@",userInfo[@"aps"][@"alert"]],
																						@"msg_id":[NSString stringWithFormat:@"%@",userInfo[@"_j_msgid"]]
	}];

	// 直接上報數據
	[[SensorsAnalyticsSDK sharedInstance] flush];
	completionHandler(); // 系统要求執行這個方法
}
// Required, iOS 7 Support
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

	[JPUSHService handleRemoteNotification:userInfo];

	if (application.applicationState == UIApplicationStateActive) {
		// 用戶點擊通知欄打開訊息,使用神策分析記錄 "App 打開訊息" 事件
		[[SensorsAnalyticsSDK sharedInstance] track:@"AppOpenNotification" 
									 withProperties:@{@"msg_title":[NSString stringWithFormat:@"%@",userInfo[@"aps"][@"alert"]],
													  @"msg_id":[NSString stringWithFormat:@"%@",userInfo[@"_id_"]]}];
	} else if (application.applicationState == UIApplicationStateBackground) {
		// 用戶點擊通知欄打開訊息,使用神策分析記錄 "App 打開訊息" 事件
		[[SensorsAnalyticsSDK sharedInstance] track:@"AppOpenNotification" 
									 withProperties:@{@"msg_title":[NSString stringWithFormat:@"%@",userInfo[@"aps"][@"alert"]],
													  @"msg_id":[NSString stringWithFormat:@"%@",userInfo[@"_id_"]]}];
	} else if (application.applicationState == UIApplicationStateInactive) {
		// 用戶點擊通知欄打開訊息,使用神策分析記錄 "App 打開訊息" 事件
	}

	// 直接上報數據
	[[SensorsAnalyticsSDK sharedInstance] flush];
	completionHandler(UIBackgroundFetchResultNewData);
}
TEXT

1.2.3. 個推

用戶需要在 AppDelegate.m 中實作以下回呼方法並在回呼方法中呼叫神策分析 SDK 打開訊息的事件。

// Required, iOS 7 Support
- (void)application: (UIApplication * )application didReceiveRemoteNotification: (NSDictionary * )userInfo fetchCompletionHandler: (void (^)(UIBackgroundFetchResult))completionHandler {
    if (application.applicationState == UIApplicationStateActive) {
        // 用戶點擊通知欄打開訊息,使用神策分析記錄 "App 打開訊息" 事件
        [[SensorsAnalyticsSDK sharedInstance] track:@"AppOpenNotification" withProperties:@{@"msg_title": [NSString stringWithFormat:@"%@", userInfo[@"aps"][@"alert"]],
                                                                                            @ "msg_id":[NSString stringWithFormat:@"%@", userInfo[@"_id_"]]
                                                                                            }]
    } else if (application.applicationState == UIApplicationStateBackground) {
        // 用戶點擊通知欄打開訊息,使用神策分析記錄 "App 打開訊息" 事件
        [[SensorsAnalyticsSDK sharedInstance] track:@"AppOpenNotification" withProperties:@{@"msg_title": [NSString stringWithFormat:@"%@", userInfo[@"aps"][@"alert"]],
                                                                                            @ "msg_id":[NSString stringWithFormat:@"%@", userInfo[@"_id_"]]}]
    } else if (application.applicationState == UIApplicationStateInactive) {
        // 用戶點擊通知欄打開訊息,使用神策分析記錄 "App 打開訊息" 事件
    }

    // 直接上報數據
    [[SensorsAnalyticsSDK sharedInstance] flush]
    completionHandler(UIBackgroundFetchResultNewData)
}

- (void)GeTuiSdkDidReceivePayloadData: (NSData * )payloadData andTaskId: (NSString * )taskId andMsgId: (NSString * )msgId andOffLine: (BOOL)offLine fromGtAppId: (NSString * )appId {
    // 收到個推訊息
    NSString * payloadMsg = nil
    if (payloadData) {
        payloadMsg = [[NSString alloc] initWithBytes:payloadData.bytes length:payloadData.length encoding:NSUTF8StringEncoding]
    }
    NSString * msg = [NSString stringWithFormat:@"taskId=%@,messageId:%@,payloadMsg:%@%@", taskId, msgId, payloadMsg, offLine ? @ "<離線訊息>": @ ""]
    NSLog(@"\n>>>[GexinSdk ReceivePayload]:%@\n\n", msg)

    [[SensorsAnalyticsSDK sharedInstance] track:@"AppReceivedGetuiNotification" withProperties:@{@"msg": msg}]
}
TEXT

2. 在 Android 中整合第三方推播系统

2.1. 取得裝置推播 ID

首先,開發者需要在 App 中整合第三方推播系統的 SDK,並在 App 初始化過程中取得裝置推播 ID,並保存在神策分析的用戶 Profile 中。以下簡要說明整合第三方推播系統的整合方式。

2.1.1. 极光推播

請參考極光推播《Android SDK 文件》,將極光推播的 SDK 整合到 App 中。開發者需要將 App 的裝置推播 ID 保存在神策分析的用戶 Profile 中。神策分析的用戶分群等分析功能會使用該裝置推播 ID 進行用戶關聯。請參考 Android SDK 將神策分析 SDK 整合到 App 中。

極光推播使用唯一的 Registration Id 標示裝置。開發者需要在 Manifest 中定義 Receiver 接受極光推播的廣播,透過 cn.jpush.android.intent.REGISTRATION 訊息取得 Registration Id

<receiver
	android:name="Your Receiver"
	android:enabled="true">
	<intent-filter>
		<action android:name="cn.jpush.android.intent.REGISTRATION" />
		<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
		<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
		<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
		<category android:name="You package Name" />
	</intent-filter>
</receiver>
XML

廣播 cn.jpush.android.intent.REGISTRATION 的 Intent 參數中JPushInterface.EXTRA_REGISTRATION_ID 為 Registration Id ,開發者在極光推播初始化完成後,在廣播中取得 Registration Id 保存在神策分析的用戶 Profile 中:

public void onReceive(Context context, Intent intent) {
	// 收到極光推播初始化成功的廣播
	if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
		// 取得極光推播的 RegistrationId
		final String registrationId = intent.getExtras().getString(JPushInterface.EXTRA_REGISTRATION_ID);
		// 將推播 ID 保存到用戶表中
		SensorsDataAPI.sharedInstance().profilePushId("jgId",registrationId);
	}
}
JAVA



由於極光 SDK 只會在第一次初始化成功時,傳出 JPushInterface.ACTION_REGISTRATION_ID 廣播,為確保已整合 App 的老用戶也能把推播 ID 保存到神策分析的用戶表中,可以在呼叫 login 方法後再次保存推播 ID:

// 註冊成功/登入成功(呼叫 login 方法)後 保存 jgId 到用戶表
String registrationId=JPushInterface.getRegistrationID(this);
SensorsDataAPI.sharedInstance().profilePushId("jgId",registrationId);
JAVA

2.1.2. 小米推播

請參考小米推播服務《Android SDK 文件》,將小米推播的 SDK 整合到 App 中。開發者需要將 App 的裝置推播 ID 保存在神策分析的用戶 Profile 中。神策分析的用戶分群等分析功能會使用該裝置推播 ID 進行用戶關聯。請參考《神策分析 Android SDK 使用說明》將神策分析 SDK 整合到 App 中。

開發者在小米推播初始化完成後,在廣播中取得 Registration Id 保存在神策分析的用戶 Profile 中:

@Override
public void onReceiveRegisterResult(Context context, MiPushCommandMessage message) {
	String command = message.getCommand();
	List<String> arguments = message.getCommandArguments();
	String mRegId = ((arguments != null && arguments.size() > 0) ? arguments.get(0) : null);
	if (MiPushClient.COMMAND_REGISTER.equals(command)) {
		if (message.getResultCode() == ErrorCode.SUCCESS) {
		// 小米推播初始化成功,將推播 ID 保存到用戶表中
		SensorsDataAPI.sharedInstance().profilePushId("xmId",mRegId);
		}
	}
}
JAVA

2.1.3. 個推

請參考個推​​《Android SDK 文件》,將個推的 SDK 整合到 App 中。開發者需要將 App 的裝置推播 ID 保存在神策分析的用戶 Profile 中。神策分析的用戶分群等分析功能會使用該裝置推播 ID 進行用戶關聯。請參考《神策分析 Android SDK 使用說明》將神策分析 SDK 整合到 App 中。

開發者在 GTIntentService onReceiveClientId 中取得 ClientId 保存在神策分析的用戶 Profile 中:

@Override
public void onReceiveClientId(Context context, String clientid) {
// 將 clientid 保存到用戶表 gtId 中
SensorsDataAPI.sharedInstance().profilePushId("gtId",clientid);
}
JAVA


Android SDK 3.2.5版本及之後,可以呼叫 profileUnsetPushId(String pushTypeKey) 刪除用戶表的推播 id,pushTypeKey 為設定的用戶屬性的 key 值,如範例中的 gtId

2.2. App 推播效果追蹤

開發者可以使用神策分析追蹤推播效果。當用戶收到推播訊息時,透過神策分析 SDK 上報訊息推播成功事件,並透過漏斗分析等功能,將用戶在推播前的行為和推播後的行為關聯起來。

我們可以在App 中監聽第三方訊息推播服務的廣播,當收到訊息時呼叫神策分析的 track 介面記錄 App 推播成功事件;當用戶點擊訊息打開 App 或執行其他行為時,呼叫 track 介面記錄 App 訊息打開事件。

假設 App 推播成功事件的名稱為 AppReceivedNotification,中文名稱為 App 訊息推播成功,包含事件屬性:

  • msg_title - 訊息標題
  • msg_id - 訊息唯一ID

以下簡要介紹如何在 App 中記錄上述 App 訊息推播成功 事件,追蹤極光推播的推播效果。

2.2.1. 极光推播

如極光推播文件所述,用戶需要在 Receiver 中處理極光推播的廣播,並在收到訊息時使用神策分析 SDK 追蹤推播成功的事件。

public void onReceive(Context context, Intent intent) {
    if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
        // 極光推播註冊成功通知,如前文所述,得到 Registration Id 並保存在神策分析的用戶 Profile 中
    } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
        // 用戶收到了自定義訊息,自定義訊息不會展示在通知欄,只透傳給 App
    } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
        // 用戶收到了推播訊息,使用神策分析追蹤 "App 訊息推播成功" 事件
        Bundle message = intent.getExtras()
        try {
            JSONObject properties = new JSONObject()
            // 取得訊息標題,並保存在事件屬性 msg_title 中
            properties.put("msg_title", message.getString(
                JPushInterface.EXTRA_NOTIFICATION_TITLE))
            // 取得訊息 ID,並保存在事件屬性 msg_id 中
            properties.put("msg_id", message.getString(
                JPushInterface.EXTRA_MSG_ID))
            // 使用神策分析追蹤 "App 訊息推播成功" 事件
            SensorsDataAPI.sharedInstance().track("AppReceivedNotification", properties)
        } catch(InvalidDataException e) {
            e.printStackTrace()
        } catch(JSONException e) {
            e.printStackTrace()
        }
    } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
        // 用戶點擊打開訊息,使用收到推播訊息類似的方法,使用神策分析記錄 "App 打開訊息" 事件
    }
}
JAVA

2.2.2. 小米推播

如小米推播文件所述,用戶需要在 Receiver 中處理小米推播的廣播,並在收到訊息時使用神策分析 SDK 追蹤推播成功的事件。

@Override
public void onNotificationMessageArrived(Context context, MiPushMessage message) {
    try {
        JSONObject properties = new JSONObject()
        // 取得訊息標題,並保存在事件屬性 msg_title 中
        properties.put("msg_title", message.getTitle())
        // 取得訊息 ID,並保存在事件屬性 msg_id 中
        properties.put("msg_id", message.getMessageId())
        // 使用神策分析成功" 事件
        SensorsDataAPI.sharedInstance().track("AppReceivedNotification", properties)
    } catch(Exception e) {
        e.printStackTrace()
    }
}


@Override
public void onNotificationMessageClicked(Context context, MiPushMessage message) {
    // 用戶點擊打開訊息,使用收到推播訊息類似的方法,使用神策分析記錄 "App 打開訊息" 事件
}


@Override
public void onReceivePassThroughMessage(Context context, MiPushMessage message) {
    // 用戶收到了自定義訊息,自定義訊息不會展示在通知欄,只透傳給 App
}
JAVA

2.2.3. 個推

如個推文件所述,用戶需要在 GTIntentService 中處理推播訊息,可以在透傳訊息到達時使用神策分析 SDK 追蹤訊息到達事件。

@Override
public void onReceiveMessageData(Context context, final GTTransmitMessage gtTransmitMessage) {
    try {
        JSONObject properties = new JSONObject()
        // 取得訊息 ID,並保存在事件屬性 msg_id 中
        properties.put("msg_id", gtTransmitMessage.getMessageId())
        // 追蹤 "訊息到達" 事件
        SensorsDataAPI.sharedInstance().track("AppReceivedNotification", properties)
    } catch(Exception e) {
        e.printStackTrace()
    }
}
JAVA

3. 在神策分析中使用推播服務(以極光推播為例)

3.1. 填寫推播設定

開發在第三方推播平台註冊了 App 後,使用管理員帳號進入神策分析的推播服務管理介面。

新增推播服務,選擇第三方推播服務商,填入App Key、Secret Key 等設定資訊,特別是,開發者需要填寫保存裝置推播 ID 的 Profile 名稱,如前文的例子中,我們在 jgId 中保存極光推播 Android App 的裝置推播 ID。

成功增加推播服務後,將可以使用該推播設定,在用戶分群、留存用戶分析等分析功能中使用訊息推播功能。

3.2. 用戶分群

在神策分析中,可以按照用戶的事件所體現的過往的行為特徵和用戶的 Profile 所體現的用戶自然屬性特徵,來對整個用戶群體進行分群。開發者可以根據分群結果,對群體中的用戶推播訊息。如圖,當用戶編輯用戶分群規則時,勾選推播管道:

當用戶分群執行成功後,會自動在第三方推播管道中為滿足分群條件的用戶標記 Tag,Tag 名稱為用戶分群的**英文名**。特別是,當開發者擁有多款 App 的多個推播管道時,可以同時將推播結果同步到多個推播管道的 Tag 中。

3.3. 第三方推播平台進行訊息推播

開發者可以在第三方推播系統的後台,使用用戶分群的英文名對應的 Tag 進行訊息推播,例如在極光推播中:

更多關於如何使用神策分析用戶分群,可以參考文件用戶分群

3.4. 用戶列表

在神策分析的各種數據分析功能中,都可以根據分析結果取得對應的用戶列表,如留存分析中,開發者可以得到第一天留存的用戶列表:

在用戶列表中,可以根據用戶列表的產生規則建立用戶分群,此時我們也可以為該分群設定訊息推播:

進而,在用戶分群執行成功後,開發者可以在第三方推播系統的後台使用用戶分群的英文名對應的 Tag 進行訊息推播。

4. 推播效果追蹤

如前文所述,開發者在 App 中整合第三方訊息推播服務後,可以使用神策分析追蹤推播效果。我們對一些常用的推播效果分析,做簡單的介紹。

4.1. 統計推播成功的用戶數

可以直接在事件分析中,統計 App 訊息推播成功 事件的觸發用戶數,並篩選對應的訊息唯一 ID 屬性。

4.2. 分析推播成功的用戶的轉化

想查看某一段時間內,推播成功的用戶的轉化,可以在漏斗分析中新建漏斗,第一個步驟為 App 訊息推播成功,第二個步驟為下訂單等行為。

4.3. 分析推播成功的用戶的留存

想查看某一段時間內,推播成功的用戶的留存,可以在留存分析中,把初始行為設定為 App 訊息推播成功,後續行為設定為 任意事件,或者某個表示用戶留存的核心行為。