文档

概览


AdGyde是一款移动应用程序归因工具,可帮助应用程序所有者/营销人员更好地进行广告定位并优化广告支出。

归因
AdGyde通过其归因SDK可以确定应用安装通过哪个渠道/合作伙伴。 AdGyde显示了安装后事件,用户流以及应用程序的使用方式。 此数据可以帮助广告客户/应用程序所有者专门定位用户细分,找出改善投资回报率的最佳渠道。

要开始使用,请联系AdGyde支持 - support@adgyde.com

要开始集成,请检查
  1. 集成 Android SDK
  2. 集成 Unity SDK
  3. 集成 Cordova SDK

整合过程



1. 获取您的应用密钥
登录您的AdGyde控制台,凭据已由AdGyde支持团队提供。 如果您还没有收到相同的信息,请联系AdGyde支持团队。

请按照给定的步骤 :-
第1步 - 访问AdGyde网站 - https://www.adgyde.com
第2步 - 转到控制台
第3步 - 使用您的凭据登录
步骤4 - 从菜单选项转到设置 - >应用程序
步骤5 - 单击右上角的“创建应用程序”选项
步骤6 - 填写应用程序名称和包名称
步骤7 - 记下App Key以进行集成参考

2. 下载Android SDK
请从AdGyde控制台右上角的“下载Android SDK”链接下载SDK。



使用以下步骤集成下载的SDK


3. 将SDK集成到项目中

3.1 将库文件添加到项目中
  • 解压AdGyde Android SDK
  • 将ADGYDE_ANDROID_SDK * .aar文件添加到您的android项目中

3.2 按照以下步骤将.aar文件导入项目
  • 转到文件>新建>新模块
  • 选择“导入.JAR / .AAR包”,然后单击“下一步”。
  • 输入.aar文件的路径,然后单击“完成”。
  • 转到文件>项目结构(Ctrl + Shift + Alt + S)。
  • 在左侧菜单中的“模块”下,选择“应用”。
  • 转到“依赖关系”选项卡。
  • 单击右上角的绿色“+”。
  • 选择“模块依赖”
  • 从列表中选择ADGYDE_ANDROID_SDK .AAR文件。

3.3 初始化AdGyde
Android SDK需要在应用程序中初始化。 请检查Android SDK上的示例项目以获取完整代码。

package com.adgyde.example;

import android.app.Application;
import android.util.Log;
import com.adgyde.android.AdGyde;

public class ExampleApplication extends Application implements
Constants {
@Override

public void onCreate() {
super.onCreate();

Log.d(TAG, "ExampleApplication.onCreate()");
// Default channel is Organic
AdGyde.init(this, "Your Appkey", "Organic");
AdGyde.flush();

AdGyde.setDebugEnabled(true);
}
}

请不要在主要活动上初始化AdGyde SDK,否则会导致会话数据不正确。

请求您创建单独的应用程序类或使用项目中已存在的任何应用程序类。 对于New application class - 创建 ExampleApplication.java并 在AndroidManifest.xml中的application标签下添加详细信息。

<application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name= "com.adgyde.example.ExampleApplication">

<!- application configuration items -->

</application>

android:name参数的值应该是新创建的应用程序类的全名,如上面的代码片段所示

3.4 将IMEI传递给AdGyde
如果应用程序需要传递IMEI并将其与其他用户详细信息一起记录,则需要授予Android SDK权限以明确获取IMEI。即使有应用程序的许可,未经应用程序开发人员的同意,AdGyde SDK也不会选择IMEI,用户需要使用AdGyde.allowPermissionIMEI(context,true)函数将其传递给SDK。

除上述许可外,请确保应用程序本身具有提取IMEI的许可。在应用程序manifest.xml文件中添加电话状态权限

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

以下是在App Developer同意通过IMEI的情况下初始化Android SDK的示例代码
package com.adgyde.example;

import android.app.Application;
import android.util.Log;
import com.adgyde.android.AdGyde;

public class ExampleApplication extends Application implements
Constants {
@Override

public void onCreate() {
super.onCreate();

Log.d(TAG, "ExampleApplication.onCreate()");
AdGyde.allowPermissionIMEI(this, true);
AdGyde.init(this, "Your Appkey", "Organic"); // Default channel is Organic

AdGyde.setDebugEnabled(true);
}
}

3.5 将Google Play服务嵌入到您的应用中
安装Google Play Services SDK并将其导入您的项目。 有关下载详情, 点击这里。
将以下代码 / 条目 添加 到AndroidManifest.xml作为应用程序标记中的最后一个条目(就在 </application> 之前)

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>

注意
AdGyde建议始终使用最新版本的Google Play服务。

有关详细信息,请参阅以下链接。
https://developer.android.com/google/play-services/setup.html
请参考以下代码

< application
android:name=".ExampleApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">

<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />


<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" \>
</intent-filter>
</activity>

<service android:name="com.adgyde.android.AppJobService"android:exported="true"
android:permission="android.permission.BIND_JOB_SERVICE">
</service>


3.6 androidmanifest.xml中添加安装接收器代码

注意:
请确保将以下接收器标签保留在应用程序标签内。

<receiver android:name="com.adgyde.android.InstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

如应用程序使用了多个INSTALL_REFERRER接收器,您可以使用
com.adgyde.android.MultiInstallReceiver以处理这种场景。
MultiInstallReceive必须是首个INSTALL_REFERRER接收器,它会向其他接收器广播此事件。

<receiver android:name="com.adgyde.android.MultiInstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

如果要使用多个接收器,则Manifest.xml应如下所示:

<!--The AdGyde Install Receiver should be placed first and it will broadcast to all receivers placed below it -->
<receiver android:name="com.adgyde.android.MultiInstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

<!--All other receivers should be followed right after -->
<receiver android:name="com.google.android.abc.AbcReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

<receiver android:name="com.adsmobi.android.xyz.InstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>


3.7 添加项目权限
将以下权限添加到AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</usespermission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>


3.8 向项目添加依赖项
将以下依赖项添加到Android gradle文件(Module:android)。

dependencies {
// . . .
compile 'com.android.installreferrer:installreferrer:1.0'
// . . .
}


4. 会议
会话是移动应用程序和用户之间的对话。 会话从应用程序启动开始,并在用户退出应用程序后结束。

在AdGyde Android SDK中,会话链接到Android应用程序生命周期,因此无需任何集成即可自动计算。

5. 用户流程
“用户流” 允许Application Developer通过应用程序中定义的活动来评估其用户的移动。 通过分析用户流程Sankey 图, App开发人员可以预测哪些活动在其用户中最受欢迎以及下降率高的位置。

在AdGyde Android SDK中,用户流链接到Android应用程序生命周期,因此无需任何集成即可自动计算。

6. 卸载跟踪
AdGyde的卸载跟踪 功能 允许您跟踪指定应用程序的卸载次数。 卸载是一个重要的索引,可帮助您跟踪用户的质量,从而跟踪广告系列。

卸载详细的集成过程

7. 活动
AdGyde的事件跟踪允许应用程序所有者跟踪用户触发的事件。 用户在您的应用程序中执行的操作通常使用“注册”,“添加到购物车”,“已启动付款”,“付款”等方式进行跟踪。
AdGyde支持多种类型的活动,请按照以下链接在您的应用程序中集成事件

活动详细整合过程

8. 深层链接
深层链接是在提供个性化内容或将用户发送到应用程序内的特定活动时启动移动应用程序的行为。

深层链接详细的集成过程

9. 人口统计学
AdGyde人口统计数据提供详细的年龄和性别明智的用户隔离,广告客户可以使用它来定位新用户并有效地运行他们的广告系列。

人口统计详细的整合过程

10. Pass additional data to SDK
AdGyde允许将Userid之类的附加数据传递到SDK,以便可以将其与AdGyde数据和日志相关联。

  • 广告商的User_Id
    如果广告商需要将AdGyde数据和日志与其自己的用户ID相关联,则广告商可以使用AdGyde.setClientUserId(“ ADG1045984”)函数将其明确传递给AdGyde SDK。一旦通过,AdGyde将能够明智地共享安装,事件等Userid。



1. 获取您的应用密钥
登录您的AdGyde控制台,凭据已由AdGyde支持团队提供。 如果您还没有收到相同的信息,请联系AdGyde支持团队。

请按照给定的步骤 :-
第1步 - 访问AdGyde网站 - https://www.adgyde.com
第2步 - 转到控制台
第3步 - 使用您的凭据登录
步骤4 - 从菜单选项转到设置 - >应用程序
步骤5 - 单击右上角的“创建应用程序”选项
步骤6 - 填写应用程序名称和包名称
步骤7 - 记下App Key以进行集成参考

2. 下载 Unity SDK
请从AdGyde控制台右上角的“下载Android SDK”链接下载SDK。



使用以下步骤集成下载的SDK


3. 将SDK集成到项目中

3.1 将库文件添加到项目中
  • 解压AdGyde Android Unity SDK
  • 将ADGYDE_ANDROID_Unity_SDK 文件添加到您的android项目中

3.2 按照以下步骤将.aar文件导入项目
  • 打开Unity Project并将平台切换到Android
  • 点击资产 - >导入套餐 - >自定义套餐(Adgyde Unity套餐)
  • 在导入窗口中选择所有文件,然后单击导入
  • 在“层次结构”选项卡中创建一个空的游戏对象
  • 将AdgydeDemo.cs文件添加到空游戏对象

3.3 初始化AdGyde
Android Unity SDK需要在主脚本中初始化。 请查看Android Unity SDK上的示例项目以获取完整代码。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Sample_UI_Class : MonoBehaviour {
private static Sample_UI_Class _instance = null;

public static Sample_UI_Class SharedInstance {
get {
// if the instance hasnt been assigned then search for it
if (_instance == null) {
_instance = GameObject.FindObjectOfType(typeof(Sample_UI_Class)) as Sample_UI_Class;
}

return _instance;
}
}

public Text DebugLog;

void Awake(){
AdgydeManager.SharedInstance.Adgyde_Init();
// initialized AdGyde
}

3.4 将IMEI传递给AdGyde
如果应用程序需要传递IMEI并将其与其他用户详细信息一起记录,则需要授予Android SDK权限以明确获取IMEI。即使有应用程序的许可,未经应用程序开发人员的同意,AdGyde SDK也不会选择IMEI,用户需要使用AdGyde.allowPermissionIMEI(context,true)函数将其传递给SDK。

除上述许可外,请确保应用程序本身具有提取IMEI的许可。在应用程序manifest.xml文件中添加电话状态权限

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

以下是在App Developer同意通过IMEI的情况下初始化Android SDK的示例代码
void Awake() {
// initialized AdGyde
AdgydeManager.SharedInstance.Adgyde_Init("Your_App_Key", "Organic");
// Set IMEI sharing Consent
AdgydeManager.SharedInstance.OnImeiPermission(true);

// Set Current Screen
AdgydeManager.SharedInstance.setCurrentScreen("Home_Page"); //Custom User Flow
// get Deep Link Data
AdgydeManager.SharedInstance.getDeeplinkDataURl();
}

3.5 将Google Play服务嵌入到您的应用中
安装Google Play Services SDK并将其导入您的项目。 有关下载详情, 点击这里。 将以下代码 / 条目 添加 到AndroidManifest.xml作为应用程序标记中的最后一个条目(就在 </application> 之前)

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>

注意
AdGyde建议始终使用最新版本的Google Play服务。

有关详细信息,请参阅以下链接。
https://developer.android.com/google/play-services/setup.html
请参考以下代码

< application
android:icon="@drawable/app_icon"
android:label="@string/app_name">

<activity android:name="com.google.firebase.MessagingUnityPlayerActivity"
android:label="@string/app_name"
android:icon="@drawable/app_icon"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|
screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">

<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>

<service android:name="com.google.firebase.messaging.MessageForwardingService"
android:exported="false"/>

<service
android:name="com.adgyde.android.AppJobService" android:exported="true" android:permission="android.permission.BIND_JOB_SERVICE" />
</application>


3.6 androidmanifest.xml中添加安装接收器代码

注意:
请确保将以下接收器标签保留在应用程序标签内。

<receiver android:name="com.adgyde.android.InstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

如应用程序使用了多个INSTALL_REFERRER接收器,您可以使用
com.adgyde.android.MultiInstallReceiver以处理这种场景。
MultiInstallReceive必须是首个INSTALL_REFERRER接收器,它会向其他接收器广播此事件。

<receiver android:name="com.adgyde.android.MultiInstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

如果要使用多个接收器,则Manifest.xml应如下所示:

<!--The AdGyde Install Receiver should be placed first and it will broadcast to all receivers placed below it -->
<receiver android:name="com.adgyde.android.MultiInstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

<!--All other receivers should be followed right after -->
<receiver android:name="com.google.android.abc.AbcReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

<receiver android:name="com.adsmobi.android.xyz.InstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>


3.7 添加项目权限
将以下权限添加到AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</usespermission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>


3.8 向项目添加依赖项
将以下依赖项添加到Android gradle文件(Module:android)。

dependencies {
// . . .
compile 'com.android.installreferrer:installreferrer:1.0'
// . . .
}


4. 会议
会话是移动应用程序和用户之间的对话。 会话从应用程序启动开始,并在用户退出应用程序后结束。 AdGyde有助于跟踪应用程序的会话,会话持续时间以及用户在应用程序上花费的时间。

会话细节集成过程

5. 用户流程
“用户流” 允许Application Developer通过应用程序中定义的活动来评估其用户的移动。 通过分析用户流程Sankey 图, App开发人员可以预测哪些活动在其用户中最受欢迎以及下降率高的位置。

用户流程详细集成过程

6. 卸载跟踪
AdGyde的卸载跟踪 功能 允许您跟踪指定应用程序的卸载次数。 卸载是一个重要的索引,可帮助您跟踪用户的质量,从而跟踪广告系列。

卸载详细的集成过程

7. 活动
AdGyde的事件跟踪允许应用程序所有者跟踪用户触发的事件。 用户在您的应用程序中执行的操作通常使用“注册”,“添加到购物车”,“已启动付款”,“付款”等方式进行跟踪。
AdGyde支持多种类型的活动,请按照以下链接在您的应用程序中集成事件

活动详细整合过程

8. 深层链接
深层链接是在提供个性化内容或将用户发送到应用程序内的特定活动时启动移动应用程序的行为。

深层链接详细的集成过程

9. 人口统计学
AdGyde人口统计数据提供详细的年龄和性别明智的用户隔离,广告客户可以使用它来定位新用户并有效地运行他们的广告系列。

人口统计详细的整合过程

10. Pass additional data to SDK
AdGyde允许将Userid之类的附加数据传递到SDK,以便可以将其与AdGyde数据和日志相关联。

  • 广告商的User_Id
    如果广告商需要将AdGyde数据和日志与其自己的用户ID相关联,则广告商可以使用AdgydeManager.SharedInstance.SetUserId("ADG1045984")函数将其明确传递给AdGyde SDK。一旦通过,AdGyde将能够明智地共享安装,事件等Userid。



1. 获取您的应用密钥
登录您的AdGyde控制台,凭据已由AdGyde支持团队提供。 如果您还没有收到相同的信息,请联系AdGyde支持团队。

请按照给定的步骤 :-
第1步 - 访问AdGyde网站 - https://www.adgyde.com
第2步 - 转到控制台
第3步 - 使用您的凭据登录
步骤4 - 从菜单选项转到设置 - >应用程序
步骤5 - 单击右上角的“创建应用程序”选项
步骤6 - 填写应用程序名称和包名称
步骤7 - 记下App Key以进行集成参考

2. 下载 Unity SDK
请从AdGyde控制台右上角的“下载Android SDK”链接下载SDK。



使用以下步骤集成下载的SDK


3. 将SDK集成到项目中

3.1 将库文件添加到项目中
  • 解压缩AdGyde Android Cordova插件
  • 将AdGyde Android插件文件放入您的插件文件夹

3.2 按照以下步骤将.aar文件导入项目
  • 打开Cordova Project并将平台切换到Android
  • 使用“ Cordova prepare”命令将插件添加到您的平台。

3.3 初始化AdGyde
Android Unity SDK需要在主脚本中初始化。 请查看Android Unity SDK上的示例项目以获取完整代码。

document.addEventListener("deviceready", function(){
// AdGyde Initialise
// Initialize AdGyde SDK with appkey & default channel id "Organic".
// When application is installed from Google Play Store without any campaign the Channel will be Organic as specified in Init Function
// In case the application is installed through a campaign link then the Default channel will be overridden and value from the campaign link will be passed.

AdGydeTracker.initAdGyde("Your App key","Organic");
});

3.4 将IMEI传递给AdGyde
如果应用程序需要传递IMEI并将其与其他用户详细信息一起记录,则需要授予Android SDK权限以明确获取IMEI。即使有应用程序的许可,未经应用程序开发人员的同意,AdGyde SDK也不会选择IMEI,用户需要使用AdGyde.allowPermissionIMEI(context, true) 函数将其传递给SDK。

除上述许可外,请确保应用程序本身具有提取IMEI的许可。在应用程序manifest.xml文件中添加电话状态权限

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

以下是在App Developer同意通过IMEI的情况下初始化Android SDK的示例代码
document.addEventListener("deviceready", function(){
// AdGyde Initialise
// Initialize AdGyde SDK with appkey & default channel id "Organic".
// When application is installed from Google Play Store without any campaign the Channel will be Organic as specified in Init Function
// In case the application is installed through a campaign link then the Default channel will be overridden and value from the campaign link will be passed.
AdGydeTracker.initAdGyde("Your App key","Organic");

//Permission for Collecting IMEI
AdGydeTracker.onAllowIMEI(true);

// Custom User Flow
AdGydeTracker.setCurrentScreen("Home_page");
// FCM token method call
onFcmToken();
});

3.5 androidmanifest.xml中添加安装接收器代码

注意:
请确保将以下接收器标签保留在应用程序标签内。

<receiver android:name="com.adgyde.android.InstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

如应用程序使用了多个INSTALL_REFERRER接收器,您可以使用
com.adgyde.android.MultiInstallReceiver以处理这种场景。
MultiInstallReceive必须是首个INSTALL_REFERRER接收器,它会向其他接收器广播此事件。

<receiver android:name="com.adgyde.android.MultiInstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

如果要使用多个接收器,则Manifest.xml应如下所示:

<!--The AdGyde Install Receiver should be placed first and it will broadcast to all receivers placed below it -->
<receiver android:name="com.adgyde.android.MultiInstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

<!--All other receivers should be followed right after -->
<receiver android:name="com.google.android.abc.AbcReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>

<receiver android:name="com.adsmobi.android.xyz.InstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>


3.6 添加项目权限
将以下权限添加到AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</usespermission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>


3.7 向项目添加依赖项
将以下依赖项添加到Android gradle文件(Module:android)。

dependencies {
// . . .
compile 'com.android.installreferrer:installreferrer:1.0'
// . . .
}


4. 会议
会话是移动应用程序和用户之间的对话。 会话从应用程序启动开始,并在用户退出应用程序后结束。 AdGyde有助于跟踪应用程序的会话,会话持续时间以及用户在应用程序上花费的时间。

会话细节集成过程

5. 用户流程
“用户流” 允许Application Developer通过应用程序中定义的活动来评估其用户的移动。 通过分析用户流程Sankey 图, App开发人员可以预测哪些活动在其用户中最受欢迎以及下降率高的位置。

用户流程详细集成过程

6. 卸载跟踪
AdGyde的卸载跟踪 功能 允许您跟踪指定应用程序的卸载次数。 卸载是一个重要的索引,可帮助您跟踪用户的质量,从而跟踪广告系列。

卸载详细的集成过程

7. 活动
AdGyde的事件跟踪允许应用程序所有者跟踪用户触发的事件。 用户在您的应用程序中执行的操作通常使用“注册”,“添加到购物车”,“已启动付款”,“付款”等方式进行跟踪。
AdGyde支持多种类型的活动,请按照以下链接在您的应用程序中集成事件

活动详细整合过程

8. 深层链接
深层链接是在提供个性化内容或将用户发送到应用程序内的特定活动时启动移动应用程序的行为。

深层链接详细的集成过程

9. 人口统计学
AdGyde人口统计数据提供详细的年龄和性别明智的用户隔离,广告客户可以使用它来定位新用户并有效地运行他们的广告系列。

人口统计详细的整合过程

10. Pass additional data to SDK
AdGyde允许将Userid之类的附加数据传递到SDK,以便可以将其与AdGyde数据和日志相关联。

  • 广告商的User_Id
    如果广告商需要将AdGyde数据和日志与其自己的用户ID相关联,则广告商可以使用AdGydeTracker.SetUserId("ADG1045984")函数将其明确传递给AdGyde SDK。一旦通过,AdGyde将能够明智地共享安装,事件等Userid。




获得


新用户
AdGyde可以让您知道有多少用户通过各种广告系列实时安装了您的应用。 通过此功能,您可以比较广告系列的效果并分析应用程序的流量。

有机 v/s 非有机下载
AdGyde为有机和非有机下载提供隔离数据
Organic App download: 有机下载是一种下载类型,其中用户已通过Play商店访问您的应用程序,搜索您提供的关键字。
Non-organic app download: 非自然安装是用户来到您的应用下载页面的原因之一,它们可能是由朋友推荐的,或者他们已经看到了某种形式的应用推广。 有人指导用户使用您的应用程序

用户流程
“用户流” 允许Application Developer通过应用程序中定义的活动来评估其用户的移动。 通过分析用户流程Sankey 图, App开发人员可以预测哪些活动在其用户中最受欢迎以及下降率高的位置。

用户流程详细

卸载跟踪
AdGyde的卸载跟踪 功能 允许您跟踪指定应用程序的卸载次数。

详细解除安装跟踪

重新归属
重新归因是将重新安装归因于使用新广告系列重新获得用户的合作伙伴。 当从新频道重新获得用户时,则可以将其称为重新归属,但是不向新频道提供相同的信用。

当使用重新归因活动完成相同操作时,用户的重新归属信用被赋予新的活动。

每个发布者的新用户
如果广告客户,合作伙伴想要跟踪新用户的子发布商,则他们可以在广告系列链接中传递子发布商值,并且这些值将反映在图表下方。

Example : http://log2.adgyde.com/intf/b/1/u?c=20180605702947&p=1046&clickid={clickid}&pub={Publisher}

返回用户
1. 概述
返回应用程序是衡量用户忠诚度的指标。

对于应用程序 - 测量应用程序性能的每周返回率将是预期的标准。 例如,对于在线书店,我们希望用户至少每周一次打开应用程序。 如果在线书店今天有100个新用户,并且60个用户在本周至少打开一次应用程序,则每周返回率为60%。 它可以被认为是一个在线书店的好。

对于游戏 - +1天的返回率应该比每周返回率更重要。 这是因为开发人员希望用户应该被他们的游戏所吸引,并且应该日夜玩游戏。 如果用户第二天不玩游戏,则表示用户不喜欢游戏并且用户可能丢失。

2. 归还的定义
在下面的描述中+ n指定自安装以来的天数。 假设2016年4月1日的新用户数为100。 +1表示2016年4月2日,+1上的用户表示在第0天(2016年4月1日)安装了应用程序的用户数再次返回/打开申请+1(2016年4月2日)。 类似地,+ 2表示2016年4月3日,而+2上的用户表示在第0天(2016年4月1日)安装了应用程序的用户在+2(2016年4月3日)上再次返回/打开了应用程序。

  日期 活跃用户数(4月1日新用户除外) 返回用户数
  2016年4月1日 100 (新用户)  
+1 2016年4月2日 5 =5
+2 2016年4月3日 10 =distinct(5, 10)
+3 2016年4月4日 15 =distinct(5, 10, 15)
+4 2016年4月5日 20 =distinct(5, 10, 15, 20)
+5 2016年4月6日 25 =distinct(5, 10, 15, 20, 25)
+6 2016年4月7日 30 =distinct(5, 10, 15, 20, 25, 30)
+7 2016年4月8日 35 =distinct(5, 10, 15, 20, 25, 30, 35)
+14 2016年4月15日 40 =distinct(5, 10, 15, 20, 25, 30, 35, 40)
+30 2016年5月1日 45 =distinct(5, 10, 15, 20, 25, 30, 35, 40, 45)


在2016年4月2日,100个新用户中有5个打开了申请,返回用户数为5。从2016年4月2日到2016年4月3日,共有15个用户打开了申请,系统将删除重复用户,因此编号返回用户将是不同的(5,10)。

注意:随着时间的推移,现实生活中的这些数据随着返回的用户数量的减少而下降。

3. 如何阅读报告
返回用户数据不会实时处理,最多可能需要24小时才能在控制台中显示。
1. 登录AdGyde控制台
2. 从左侧导航菜单中的“采集”标题中选择“返回用户”部分



听众


活跃用户
AdGyde会告诉您在给定的日期至少打开一次应用程序的用户数量,并且该数字会实时显示。

地理位置
AdGyde以明智的方式提供新用户数量,以便您可以在更有潜力的情况下定位广告系列。

会议
会话是移动应用程序和用户之间的对话。 会话从应用程序启动开始,并在用户退出应用程序后结束。

详细阅读会话

平均会话持续时间
会话从应用程序启动开始,并在用户退出应用程序后结束,会话开始和会话结束之间的时间是会话持续时间。 每个用户会话具有不同的持续时间,并且可以是一天中的多个会话。 会话持续时间平均值是通过单独地而不是用户明智地计算每个会话来计算的。

平均会话持续时间可以帮助广告客户了解用户退出应用程序的时间以及他对应用程序的感受。

人口统计学
AdGyde人口统计数据提供详细的年龄和性别明智的用户隔离,广告客户可以使用它来定位新用户并有效地运行他们的广告系列。

人口学详细

活动
事件是跟踪用户和移动应用程序之间交互的强大工具。 这些用于跟踪注册,在应用程序中购买,这些活动可以使用回发进行分组,以便为活动创建KPI

事件详细


转换渠道
转化渠道是一种根据用户与应用程序交互来衡量用户路径的方法。 它是跟踪用户对设计服务路径的反应的强大工具。

转换渠道详细信息


人口统计学



AdGyde人口统计数据提供详细的年龄和性别明智的用户隔离,广告客户可以使用它来定位新用户并有效地运行他们的广告系列。 可以记住,应用程序主要由女性和26-35岁年龄组使用,因此广告客户可以要求发布商仅定位这些群组并获得最大安装量并返回花费的成本。

年龄概况
用户年龄概况人口统计显示广告商用户隔离和特定年龄段的用户集中度。 拥有此数据,可帮助应用营销人员进行更准确的测量并帮助您做出决策。

可以通过以下两个函数将数据传递给SDK
  1. AdGyde.setAge(Context context, int years, int month, int day);
  2. AdGyde.setAge(Context context, int age);

// Age to be calculated from Year, Month, Day
AdGyde.setAge(context, 1991, 05, 03);

// Age Value
AdGyde.setAge(context, 32);





性别概况
用户性别配置文件人口统计信息向广告客户显示特定性别细分受众群的用户隔离和用户集中度。 拥有此数据,可帮助应用营销人员进行更准确的测量并帮助您做出决策。

语法:AdGyde.setGender(Context context , String gender);

函数中允许的值
  1. 男 (M)
  2. 女 (F)
  3. 其他 (O)

// when you pass string for Male
AdGyde.setGender(context, AdGyde.M);

// when you pass string for Female
AdGyde.setGender(context, AdGyde.F);

// when you pass string for Others
AdGyde.setGender(context, AdGyde.O);





AdGyde人口统计数据提供详细的年龄和性别明智的用户隔离,广告客户可以使用它来定位新用户并有效地运行他们的广告系列。 可以记住,应用程序主要由女性和26-35岁年龄组使用,因此广告客户可以要求发布商仅定位这些群组并获得最大安装量并返回花费的成本。

适合年龄段
用户年龄概况人口统计显示广告商用户隔离和特定年龄段的用户集中度。 拥有此数据,可帮助应用营销人员进行更准确的测量并帮助您做出决策。

可以通过以下两个函数将数据传递给SDK
  1. AdgydeManager.SharedInstance.OnsetAge(int years, int month, int day);
  2. AdgydeManager.SharedInstance.OnsetAge(int age);

// Age to be calculated from Year, Month, Day
AdgydeManager.SharedInstance.OnsetAge(1991, 05, 03);

// Age Value
AdgydeManager.SharedInstance.OnsetAge(32);





性别概况
用户性别配置文件人口统计信息向广告客户显示特定性别细分受众群的用户隔离和用户集中度。 拥有此数据,可帮助应用营销人员进行更准确的测量并帮助您做出决策。

语法:AdgydeManager.SharedInstance.OnsetGender(String gender);

函数中允许的值
  1. 男 (M)
  2. 女 (F)
  3. 其他 (O)

// when you pass string for Male
AdgydeManager.SharedInstance.OnsetGender(AdgydeManager.M);

// when you pass string for Female
AdgydeManager.SharedInstance.OnsetGender(AdgydeManager.F);

// when you pass string for Others
AdgydeManager.SharedInstance.OnsetGender(AdgydeManager.O);





AdGyde人口统计数据提供详细的年龄和性别明智的用户隔离,广告客户可以使用它来定位新用户并有效地运行他们的广告系列。 可以记住,应用程序主要由女性和26-35岁年龄组使用,因此广告客户可以要求发布商仅定位这些群组并获得最大安装量并返回花费的成本。

年龄概况
用户年龄概况人口统计显示广告商用户隔离和特定年龄段的用户集中度。 拥有此数据,可帮助应用营销人员进行更准确的测量并帮助您做出决策。

可以通过以下两个函数将数据传递给SDK
  1. AdGydeTracker.setAge(int years, int month, int day);
  2. AdGydeTracker.setAge(int age);

// Age to be calculated from Year, Month, Day
AdGydeTracker.setAge(1991, 05, 03);

// Age Value
AdGydeTracker.setAge(32);





性别概况
用户性别配置文件人口统计信息向广告客户显示特定性别细分受众群的用户隔离和用户集中度。 拥有此数据,可帮助应用营销人员进行更准确的测量并帮助您做出决策。

语法:AdGydeTracker.setGender(String gender);

函数中允许的值
  1. 男 (M)
  2. 女 (F)
  3. 其他 (O)

// when you pass string for Male
AdGydeTracker.setGender(AdGydeTracker.M);

// when you pass string for Female
AdGydeTracker.setGender(AdGydeTracker.F);

// when you pass string for Others
AdGydeTracker.setGender(AdGydeTracker.O);






转换渠道


漏斗是一种根据用户与应用程序交互来测量用户路径的方法。 它是跟踪用户对设计服务路径的反应的强大工具。

1. 概述


假设在新闻应用程序的主页上显示横幅。 期望用户将被吸引点击横幅,该横幅将用户导航到本地新闻。 本新闻底部有一个联系链接。 付款将基于本地新闻主题,因此我们希望用户愿意点击并通过表单建立联系。

在实践中,100个用户进入这40个用户点击横幅的主页然后在这40个用户中只有10个用户阅读新闻并点击联系链接。 转换率为10%。

2. 设置事件
在跟踪事件以创建渠道之前,需要在控制台中设置事件

请按照以下说明设置活动
  1. 登录AdGyde控制台
  2. 点击“设置” - >“活动”
  3. 单击“创建活动”按钮以创建新活动
  4. 选择应用程序并输入事件名称
  5. 选择类型 - 简单事件
  6. 无需输入参数名称
  7. 单击“创建”按钮
以下值用于此示例
活动1
  1. 名称: - EnterHomePage
  2. 类型: - 简单事件
  3. 参数名称: - 无需
活动2
  1. 名称: - BannerClicked
  2. 类型: - 简单事件
  3. 参数名称: - 无需
活动3
  1. 名称: - 联系我们
  2. 类型: - 简单事件
  3. 参数名称: - 无需

3. 跟踪代码
/**
* Invoked when user launch my application.
*/
public void onEnterHomePage() {
AdGyde.onEvent( "EnterHomePage");
}

/**
* Invoked when user click on home page banner.
*/
public void onBannerClicked() {
AdGyde.onEvent( "BannerClicked");
}

/**
* Invoked when user click on "contract us" link.
*/
public void onContractUsViewed() {
AdGyde.onEvent("ContactUs");
}


4. 设置渠道
编码部分完成后,还需要在控制台中设置漏斗。

请按照以下说明设置渠道
  1. 登录AdGyde控制台
  2. 点击“创建”按钮创建一个新的渠道
  3. 选择应用程序并输入渠道名称
  4. 点击“创建”按钮以保存渠道
  5. 在渠道列表中,点击新创建的渠道的“点击”
  6. 添加项目
注意:漏斗创建后,渠道中的数据填充至少需要1天。



漏斗以每个步骤的视觉形式绘制转换率。

回发(S2S)宏


安装回发(S2S)支持的宏
AdGyde的一项先进功能,回发后URL为每个安装的新用户和应用内事件提供服务器到服务器通知。

以下是安装回发中支持的宏列表
评论
{clickid}合作伙伴发送的唯一价值testdclick12
{advertisingId}用户的Google广告IDe23c04c6-44aa-48fc-9781-xxxxxxxxxxxx
{androidId}应用程序的Android ID35aa72a37cxxxxxx
{idfa}目前将为null,因为我们没有捕获任何idfa值
{sub1}自定义 宏。 仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用CutomMacro1
{sub2}自定义 宏。 仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用CutomMacro2
{sub3}自定义 宏。 仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用CutomMacro3
{sub4}自定义 宏。 仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用CutomMacro4
{packageName}包的应用程序名称。仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用com.adgyde.adgydedemo
{install_time}以Unix时间戳格式返回宏1532081296
{click_time}以Unix时间戳格式返回宏1532081266
{campaign}广告系列名称TestMacroCampaign
{country_code}应返回国家/地区代码但我们在此版本中返回国家/地区名称,因为我们不会捕获国家/地区代IN
{city}城市名称Noida
{device_brand}触发安装的设备的品牌Motorola
{operator}运营商名称Wifi
{ip}设备的IP地址。在内部讨论后,应向合作伙伴提供敏感信息和回发182.76.yy.xxx
{device_model}设备型号Nexus+6.0
{language}电话的语言en
{transaction_id}AdGyde发送的唯一ID。仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用1532081266741C1wRx
{sdk_ver}AdGyde SDK版本1.1.0
{app_ver}应用版本1.9
{os_ver}该版本的设备版本6.0.1
{appName}应用程序名称保存在 AdGyde中。 仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用AdGydeDemo


示例安装回发URL:
http://www.adgyde.com?idfa={idfa}&advertiserId={advertiserId}&android-id={androidId}&app-id={packageName}&install-unix-ts={install_time}&click-ts={click_time}&camapign={camapign}&country-code={country_code}&city={city}&device-brand={device_brand}&carrier={operator}&ip={ip}&device-model={device_model}&language={language}&customclickid={transaction_id}&sdk-version={sdk_ver}&app-version={app_ver}&os-version={os_ver}&app-name={app_name}&clickid={clickid}&sub1={sub1}&sub2={sub2}&sub3={sub3}&sub4={sub4}

应用内事件回发支持的宏(S2S)
通过应用内活动,AdGyde可让您跟踪您感兴趣的任何与媒体源和广告系列相关的安装后事件。

您可以跟踪应用内事件,例如:
  • 登录
  • 添加到购物车
  • 应用内购买
  • 或任何其他逻辑事件

您还可以为每个活动添加应用内收入值,您可以在AdGyde信息中心使用此值。您可以将这些应用内事件映射到媒体源定义的事件。

以下是应用内事件回发中支持的宏列表
评论
{clickid}合作伙伴发送的唯一价值testdclick12
{eventid}自定义将事件附加到广告系列时保存的事件的值,此值由合作伙伴根据其系统提供 (&goal=1)1
{eventName}广告商设置的事件名称注册
{advertisingId}用户的Google广告IDe23c04c6-44aa-48fc-9781-xxxxxxxxxxxx
{androidId}应用程序的Android ID35aa72a37cxxxxxx
{idfa}目前将为null,因为我们没有捕获任何idfa值
{sub1}自定义 宏。 仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用CutomMacro1
{sub2}自定义 宏。 仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用CutomMacro2
{sub3}自定义 宏。 仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用CutomMacro3
{sub4}自定义 宏。 仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用CutomMacro4
{packageName}包的应用程序名称。仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用com.adgyde.adgydedemo
{country_code}应返回国家/地区代码但我们在此版本中返回国家/地区名称,因为我们不会捕获国家/地区代IN
{city}城市名称Noida
{device_brand}触发安装的设备的品牌Motorola
{operator}运营商名称Wifi
{ip}设备的IP地址。在内部讨论后,应向合作伙伴提供敏感信息和回发182.76.yy.xxx
{device_model}设备型号Nexus+6.0
{language}电话的语言en
{transaction_id}AdGyde发送的唯一ID。仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用1532081266741C1wRx
{sdk_ver}AdGyde SDK版本1.1.0
{app_ver}应用版本1.9
{os_ver}该版本的设备版本6.0.1
{appName}应用程序名称保存在 AdGyde中。 仅当广告系列采用新的广告系列跟踪方法时,即通过API / b / 1 / u时,此功能才可用AdGydeDemo
{timestamp}收到日志的时间戳。


用户流程



1. 概观
“用户流” 允许Application Developer通过应用程序中定义的活动来评估其用户的移动。 通过分析用户流程Sankey 图, App开发人员可以预测哪些活动在其用户中最受欢迎以及下降率高的位置。

假设食品交付应用程序的用户流量预计如下:
  1. 用户选择餐厅
  2. 用户选择美食
  3. 加入购物篮
  4. 付款已完成
用户流程下面解释了用户从一个活动移动到另一个活动的行为。



用户甚至可以知道用户相对于一个节点的流入和流出的数量。 例如,在下面的图像中,“Home” 节点告诉来自根,类别和促销的流程,其中蓝色表示“流入”,红色表示“流出”。





2. 积分

普通用户流程: 在AdGyde Android SDK中,用户流链接到Android应用程序生命周期,因此无需任何集成即可自动计算。

自定义用户流程: 如果应用程序包含webview和应用程序需要跟踪webview视图的用户流,则可以使用此功能。 因为Webview是单个活动,Android默认跟踪活动流程。

要在用户流中添加屏幕,请执行setCurrentScreen功能
AdGyde.setCurrentScreen(Context context, String ScreenName);

要从用户流中删除屏幕,请执行removeCurrentScreen功能
AdGyde.removeCurrentScreen(Context context, String ScreenName);

以下是可以与webview页面一起使用的自定义回发的示例代码

public class MainActivity extends AppCompatActivity
{
WebView simpleWebView;
Button loadWebPage;
String url ="https://www.adgyde.com";

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// initiate buttons and a web view
loadWebPage = (Button) findViewById(R.id.loadWebPage);
simpleWebView = (WebView) findViewById(R.id.simpleWebView);

loadWebPage.setOnClickListener(new View.OnClickListener()
{
@SuppressLint("SetJavaScriptEnabled")

@Override
public void onClick(View v)
{
simpleWebView.setWebViewClient(new MyWebViewClient());

simpleWebView.getSettings().setJavaScriptEnabled(true);
simpleWebView.loadUrl(url);
}
});
}

private class MyWebViewClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
String pageURL = view.getUrl();
String pageName="";
Log.d("xxxx", "page url----" + pageURL);
int countSls=pageURL.lastIndexOf("/")+1;
int countDot=pageURL.lastIndexOf(".");
if((countDot-countSls)>0)
{
pageName= pageURL.substring(pageURL.lastIndexOf("/") + 1, pageURL.lastIndexOf("."));
Log.d("xxxx", "page url----" + pageName);
AdGyde.setCurrentScreen(context, pageName);
}
else
{
pageName=pageURL.substring(pageURL.lastIndexOf("/") + 1, pageURL.length());
AdGyde.setCurrentScreen(context, pageName);
Log.d("xxxx", "page url----" + pageName);
}
return true;
}
}

public void onDestroy()
{
super.onDestroy();
}
}



1. 概观
“用户流” 允许Application Developer通过应用程序中定义的活动来评估其用户的移动。 通过分析用户流程Sankey 图, App开发人员可以预测哪些活动在其用户中最受欢迎以及下降率高的位置。

假设食品交付应用程序的用户流量预计如下:
  1. 用户选择餐厅
  2. 用户选择美食
  3. 加入购物篮
  4. 付款已完成
用户流程下面解释了用户从一个活动移动到另一个活动的行为。



用户甚至可以知道用户相对于一个节点的流入和流出的数量。 例如,在下面的图像中,“Home” 节点告诉来自根,类别和促销的流程,其中蓝色表示“流入”,红色表示“流出”。





2. 积分

普通用户流程: 在AdGyde Android SDK中,用户流链接到Android应用程序生命周期,因此无需任何集成即可自动计算。

自定义用户流程: 如果应用程序包含webview和应用程序需要跟踪webview视图的用户流,则可以使用此功能。 因为Webview是单个活动,Android默认跟踪活动流程。

要在用户流中添加屏幕,请执行setCurrentScreen功能
AdgydeManager.SharedInstance.setCurrentScreen(String ScreenName);

要从用户流中删除屏幕,请执行removeCurrentScreen功能
AdgydeManager.SharedInstance.removeCurrentScreen(String ScreenName);

以下是可以与webview页面一起使用的自定义回发的示例代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Sample_UI_Class : MonoBehaviour {
private static Sample_UI_Class _instance = null;

public static Sample_UI_Class SharedInstance {
get {
// if the instance hasnt been assigned then search for it
if (_instance == null) {
_instance = GameObject.FindObjectOfType(typeof(Sample_UI_Class)) as Sample_UI_Class;
}

return _instance;
}
}

void Awake(){
AdgydeManager.SharedInstance.setCurrentScreen("Home_Page");
// Set Current Screen to Stack
}

void OnApplicationQuit(){
AdgydeManager.SharedInstance.removeCurrentScreen("Home_Page");
// Remove Current Screen from Stack
}

void showNextScreen(String NewScreen){
AdgydeManager.SharedInstance.setCurrentScreen(NewScreen);
// Set Current Screen to Stack
}

void showPreviousScreen(String NewScreen, String OldScreen){
AdgydeManager.SharedInstance.removeCurrentScreen(OldScreen);
// Remove Current Screen from Stack
showNextScreen(NewScreen);
}



1. 概观
“用户流” 允许Application Developer通过应用程序中定义的活动来评估其用户的移动。 通过分析用户流程Sankey 图, App开发人员可以预测哪些活动在其用户中最受欢迎以及下降率高的位置。

假设食品交付应用程序的用户流量预计如下:
  1. 用户选择餐厅
  2. 用户选择美食
  3. 加入购物篮
  4. 付款已完成
用户流程下面解释了用户从一个活动移动到另一个活动的行为。



用户甚至可以知道用户相对于一个节点的流入和流出的数量。 例如,在下面的图像中,“Home” 节点告诉来自根,类别和促销的流程,其中蓝色表示“流入”,红色表示“流出”。





2. 积分

普通用户流程: 在AdGyde Android SDK中,用户流链接到Android应用程序生命周期,因此无需任何集成即可自动计算。

自定义用户流程: 如果应用程序包含webview和应用程序需要跟踪webview视图的用户流,则可以使用此功能。 因为Webview是单个活动,Android默认跟踪活动流程。

要在用户流中添加屏幕,请执行setCurrentScreen功能
AdGydeTracker.setCurrentScreen(String ScreenName);

要从用户流中删除屏幕,请执行removeCurrentScreen功能
AdGydeTracker.removeCurrentScreen(String ScreenName);

以下是可以与webview页面一起使用的自定义回发的示例代码

document.addEventListener("deviceready",
function() {
AdGydeTracker.setCurrentScreen("Counting_Event_Page");
}
);




会议



概述
Android应用程序是一组活动,应用程序和活动之间的关系是松散的。 最常见的案例问题之一是,按下BACK键后应用程序不会退出,这会让开发人员和用户感到困惑。 AdGyde重新定义了会话,使其易于理解。

会议的定义
会话是移动应用程序和用户之间的对话。 会话从应用程序启动开始,并在用户退出应用程序后结束。 在用户预期中,在主活动上按BACK键或单击应用程序上的退出按钮将启动应用程序退出,但这些任务将应用程序切换到背景,这很难理解。

通常开发人员使用finish()来按代码退出应用程序。
public class MainActivity extends Activity {
protected onCreate(Context context) {
// some code
Button quitButton = (Button)findViewById(R.id.quitAppButton);
quitButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// quit application by close main activity
MainActivity.this.finish();
}
});
}
}

MainActivity.this.finish()将关闭主要活动,但不会退出应用程序,这只是将应用程序置于后台。 在理解时,应该在用户再次启动应用程序时创建MainActivity,但由于应用程序已经在后台,因此只需将背景切换到前台。

AdGyde重新定义了应用程序的退出 - 一旦用户关闭最后一个活动,会话就会关闭。 它完全符合用户使用该应用程序的体验。 在最后一个活动上按BACK键将被视为用户想要退出该应用程序。

会议情景
1. 以BACK键结束
  1. 用户启动应用程序,会话开始
  2. 主要活动已创建
  3. 用户按BACK键
  4. 主要活动被破坏
  5. 会话结束
2. 按代码退出
  1. 用户启动应用程序,会话开始
  2. 主要活动已创建
  3. 用户点击主要活动的“退出”按钮
  4. 主要活动被破坏
  5. 会话结束
3. 切换到后台
  1. 用户启动应用程序,会话开始
  2. 主要活动已创建
  3. 用户按HOME键进入主屏幕
  4. 用户在45秒后点击应用程序图标
  5. 应用程序被带到前面,会话关闭,新会话开始

    如果应用程序切换到后台超过30秒,会话将被关闭,因为假设用户切换到另一个任务/应用程序并且上下文中的应用程序未被使用。
4. 被系统任务管理器杀死
  1. 用户启动应用程序,会话开始
  2. 用户按HOME键打开系统任务管理器
  3. 用户使用系统任务管理器杀死应用程序。 会话结束
5. 被系统杀死
  1. 用户启动应用程序,会话启动
  2. 用户切换到另一个应用程序
  3. 应用程序在后台运行,应用程序被低内存系统杀死。 会话结束

会话集成步骤
在AdGyde Android SDK中,会话链接到Android应用程序生命周期,因此无需任何集成即可自动计算。



概述
Android应用程序是一组活动,应用程序和活动之间的关系是松散的。 最常见的案例问题之一是,按下BACK键后应用程序不会退出,这会让开发人员和用户感到困惑。 AdGyde重新定义了会话,使其易于理解。

会议的定义
会话是移动应用程序和用户之间的对话。 会话从应用程序启动开始,并在用户退出应用程序后结束。 在用户预期中,在主活动上按BACK键或单击应用程序上的退出按钮将启动应用程序退出,但这些任务将应用程序切换到背景,这很难理解。

在理解时,应该在用户再次启动应用程序时创建MainActivity,但由于应用程序已经在后台,因此只需将背景切换到前台。

AdGyde重新定义了应用程序的退出 - 一旦用户关闭最后一个活动,会话就会关闭。它完全符合用户使用该应用程序的体验。在最后一个活动上按BACK键将被视为用户想要退出该应用程序。

会议情景
1. 以BACK键结束
  1. 用户启动应用程序,会话开始
  2. 主要活动已创建
  3. 用户按BACK键
  4. 主要活动被破坏
  5. 会话结束
2. 按代码退出
  1. 用户启动应用程序,会话开始
  2. 主要活动已创建
  3. 用户点击主要活动的“退出”按钮
  4. 主要活动被破坏
  5. 会话结束
3. 切换到后台
  1. 用户启动应用程序,会话开始
  2. 主要活动已创建
  3. 用户按HOME键进入主屏幕
  4. 用户在45秒后点击应用程序图标
  5. 应用程序被带到前面,会话关闭,新会话开始

    如果应用程序切换到后台超过30秒,会话将被关闭,因为假设用户切换到另一个任务/应用程序并且上下文中的应用程序未被使用。
4. 被系统任务管理器杀死
  1. 用户启动应用程序,会话开始
  2. 用户按HOME键打开系统任务管理器
  3. 用户使用系统任务管理器杀死应用程序。 会话结束
5. 被系统杀死
  1. 用户启动应用程序,会话启动
  2. 用户切换到另一个应用程序
  3. 应用程序在后台运行,应用程序被低内存系统杀死。 会话结束

会话集成步骤
在Unity中,会话不与应用程序生命周期相关联,因此会话功能需要从统一生命周期功能执行。
记录会话的AdGyde生命周期功能需要直接与Unity Lifecycle中的功能相关联。下面是显示此直接链接的示例代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Sample_UI_Class : MonoBehaviour {
private static Sample_UI_Class _instance = null;
public static Sample_UI_Class SharedInstance {
get {
// if the instance hasn't been assigned then search for it
if (_instance == null) {
_instance = GameObject.FindObjectOfType(typeof(Sample_UI_Class)) as Sample_UI_Class;
}

return _instance;
}
}

public Text DebugLog;

void Start() {
AdgydeManager.SharedInstance.CallOnStart();
}

void OnApplicationQuit() {
Quit ();
}

void OnApplicationKill() {
Quit ();
}

public void Quit() {
AdgydeManager.SharedInstance.CallOnStop ();
Application.Quit();
}

void OnApplicationPause(bool isPause) {
if (isPause) {
AdgydeManager.SharedInstance.CallOnPause ();
}
else
{
AdgydeManager.SharedInstance.CallOnResume ();
}

IEnumerator CallDelayDestroy (float waitTime) {
// session destroy
AdgydeManager.SharedInstance.CallOnDestroy ();
}
}
}




概述
Android应用程序是一组活动,应用程序和活动之间的关系是松散的。 最常见的案例问题之一是,按下BACK键后应用程序不会退出,这会让开发人员和用户感到困惑。 AdGyde重新定义了会话,使其易于理解。

会议的定义
会话是移动应用程序和用户之间的对话。 会话从应用程序启动开始,并在用户退出应用程序后结束。 在用户预期中,在主活动上按BACK键或单击应用程序上的退出按钮将启动应用程序退出,但这些任务将应用程序切换到背景,这很难理解。

通常开发人员使用finish()来按代码退出应用程序。

MainActivity.this.finish()将关闭主要活动,但不会退出应用程序,这只是将应用程序置于后台。 在理解时,应该在用户再次启动应用程序时创建MainActivity,但由于应用程序已经在后台,因此只需将背景切换到前台。

AdGyde重新定义了应用程序的退出 - 一旦用户关闭最后一个活动,会话就会关闭。 它完全符合用户使用该应用程序的体验。 在最后一个活动上按BACK键将被视为用户想要退出该应用程序。

会议情景
1. 以BACK键结束
  1. 用户启动应用程序,会话开始
  2. 主要活动已创建
  3. 用户按BACK键
  4. 主要活动被破坏
  5. 会话结束
2. 按代码退出
  1. 用户启动应用程序,会话开始
  2. 主要活动已创建
  3. 用户点击主要活动的“退出”按钮
  4. 主要活动被破坏
  5. 会话结束
3. 切换到后台
  1. 用户启动应用程序,会话开始
  2. 主要活动已创建
  3. 用户按HOME键进入主屏幕
  4. 用户在45秒后点击应用程序图标
  5. 应用程序被带到前面,会话关闭,新会话开始

    如果应用程序切换到后台超过30秒,会话将被关闭,因为假设用户切换到另一个任务/应用程序并且上下文中的应用程序未被使用。
4. 被系统任务管理器杀死
  1. 用户启动应用程序,会话开始
  2. 用户按HOME键打开系统任务管理器
  3. 用户使用系统任务管理器杀死应用程序。 会话结束
5. 被系统杀死
  1. 用户启动应用程序,会话启动
  2. 用户切换到另一个应用程序
  3. 应用程序在后台运行,应用程序被低内存系统杀死。 会话结束

会话集成步骤
在AdGyde Android SDK中,会话链接到Android应用程序生命周期,因此无需任何集成即可自动计算。




离线广告系列 - 跟踪安装


本节讨论跟踪的跟踪解决方案
  1. 预加载活动
  2. 离线广告系列
  3. 商店下载/ APK下载

预加载广告系列
要跟踪AdGyde中的广告系列,广告客户需要在应用程序本身中集成预加载渠道,然后与预加载合作伙伴共享APK

没有GAID的离线广告系列
要跟踪AdGyde中的广告系列,广告客户需要在应用程序本身中集成离线渠道,然后通过某些商店的通知运行广告系列。我们还可以共享跟踪链接,以帮助下载APK。

可以在AdGyde中与合作伙伴一起制作广告系列,以便广告客户跟踪CPI,CPR和CPM类型的广告系列。
用于在没有GAID的情况下跟踪离线广告系列
  1. 将以下内容作为参数传递给AdGyde.init()函数
    频道名称 = ChannelName_offlinewd_CampaignId
    示例 : Loopback_offlinewd_125

  2. 在广告系列跟踪网址中传递&offlinewd = true参数
    https://log2.adgyde.com/intf/b/1/o?c={Campaign Open Id}&p={Partner Id}&ag_r={RedirectUrl}&offlinewd=true

具有GAID的离线广告系列
要使用GAID跟踪离线广告系列,广告客户需要在AdGyde面板中创建广告系列,请指定APK链接,从该链接可以下载APK。 最重要的部分是应该在广告系列链接中传递GAID。


创建脱机跟踪链接
1. 综合合作伙伴跟踪链接
  1. 登录AdGyde控制台
  2. 点击“设置”
  3. 转到广告系列跟踪
  4. 点击“+新广告系列”
  5. 输入广告系列的名称,然后选择点击归因后退窗口的范围
  6. 单击“创建”按钮



  7. 单击频道下的“+”按钮,然后在频道名称中选择要使用的合作伙伴
  8. 单击离线复选框以进行离线广告系列(如下图所示)
  9. 复制跟踪链接



  10. 复制跟踪链接并为其他离线广告系列进行修改
    • 离线,无需GAID : 从离线跟踪链接中删除androidid = {androidid}或advertisingId = {advertisingid}
      在此URL中添加offlinewd = true。 现在,没有设备ID网址的离线广告系列跟踪将如下所示:
      https://log2.adgyde.com/intf/b/1/o?c={Campaign Open Id}&p={PartnerId}&ag_r={Redirect Url}&offlinewd=true

    • 使用GAID离线: 在网址中传递GAID或android id /设备ID来跟踪APK,而无需进行任何更改

  11. 对于没有GAID的预嵌入和脱机跟踪,需要在APK本身中对频道详细信息进行硬编码 在为频道名称参数调用AdGyde.init()函数时,提供以下指定的频道,该频道将在AdGyde控制台上显示
    • 预先嵌入 : 使用Pre_embed作为频道名称来跟踪AdGyde Console上的安装情况
      AdGyde.init(this, "Your Appkey", "Pre_embed");

    • 离线,无需GAID : 使用带'_offlinewd_'的字符串。 (例如:如果通道名称为Loopback,则将参数名称保留为Loopback_offlinewd_campaignid)
      AdGyde.init(this, "Your Appkey", "Loopback_offlinewd_125");

  12. 然后为APK创建一个可下载的链接,将跟踪链接(已从控制台复制)中的宏ag_r的值替换为APK的链接(确保从此链接下载APK文件)。
  13. 现在,已创建的链接已准备好与您的合作伙伴共享以运行广告系列。


离线广告系列安装测试
  1. 请使用 之前 从未安装过应用程序的新设备开始测试,或使用白名单设备。
  2. 确保您正在安装的int application APK已集成AdGyde SDK
  3. 安装并使用几秒钟后启动应用程序
  4. AdGyde仪表板现在应在控制台上的“非有机”下显示安装转换。

注意: AdGyde.init中设置的伙伴/频道的名称(此处为“app-Key”,“channel_offline”)应与在AdGyde控制台中创建频道时输入的名称完全相同。

package com.adgyde.example;

import android.app.Application;
import android.util.Log;

import com.adgyde.android.AdGyde;

public class ExampleApplication extends Application implements Constants {
@Override
public void onCreate() {
super.onCreate();
Log.d(TAG, "ExampleApplication.onCreate()");
// Initialize AdGyde SDK with appkey & default channel id.
// SDK will use default channel id if no INSTALL_REFERRER being sent by Google Play Service.
// This case only will happen in debug. (Install APK to phone with adb.)
AdGyde.init(this, "app-key", "channel_offline");
AdGyde.setDebugEnabled(true);
}
}

在线广告系列 - 跟踪安装


AdGyde归因和分析解决方案已为移动广告渠道整合了广告合作伙伴; 您还可以归因广告系列驱动的应用安装。

AdGyde支持
  • CPI(每次展示费用)
  • CPC (每次点击费用),
  • CPR (每次注册费用),
  • CPA (每次收购成本)

衡量您的Attribution Analytics帐户中的广告系列需要两件事:
  • 添加内部合作伙伴以将广告系列与之关联

    注意: 已与AdGyde集成的合作伙伴称为集成合作伙伴。如果您的合作伙伴未在集成合作伙伴中找到,请通过填写合作伙伴集成表单 https://www.adgyde.com/partners.php请求合作伙伴启动集成,或要求他们通过support@adgyde.com与我们联系。

  • 生成测量URL


在线活动流程





为内部合作伙伴添加广告系列
要生成要在营销广告系列中使用的衡量网址,您需要在填写广告系列详细信息后创建“广告系列”

添加新广告系列
  1. 登录AdGyde控制台
  2. 单击“设置”
  3. 转到广告系列菜单,然后点击“+新广告系列”即可开始添加新广告系列
  4. 输入广告系列名称,然后选择点击归因回溯窗口的范围
  5. 单击“创建”按钮



广告系列跟踪详情
  1. 单击频道下的“+”按钮,然后在频道名称中选择要使用的合作伙伴
  2. 设置特定合作伙伴的每次非自然下载(每次安装的成本)的成本
  3. 创建的链接; 现在可以与您的合作伙伴共享以运行该 广告系列 。



  4. 如果需要,可以为“点击每次注册”,“点击播放”等广告系列设置S2S活动(注册和播放等应用内活动)
  5. 在控制台中添加合作伙伴事件代码,该代码将与事件名称相对应(此合作伙伴事件代码将由您的合作伙伴提供)
  6. 单击“更新”按钮

广告系列跟踪详情
广告系列投放后,可以在广告系列效果下的归档分析报告中查看通过此广告系列推动的最终应用安装。
  1. 每个频道的新用户
  2. 每个频道有价值的用户
  3. 每通道成本
  4. 每个频道的每次安装点击次数
  5. 每个渠道产生的收入
  6. 每个频道的延迟深度链接计数
  7. 每个频道的深层链接数
  8. 每个频道的重新归属



深层链接



深层链接是在提供个性化内容或将用户发送到应用程序内的特定活动时启动移动应用程序的行为。

1. Deep Link的工作原理
当用户单击Campaign链接时,如果安装了应用程序,则将使用深层链接打开应用程序并将用户定向到特定页面。如果未安装应用程序,则广告系列将照常运行,用户可以安装应用程序。

下图显示了深层链接方案。



2. 深层链接集成步骤
允许用户启用深层链接。我们在AdGyde控制台中提供用户界面。使用以下步骤,用户可以启用深层链接。

  1. 登录AdGyde控制台
  2. 单击设置选项
  3. 单击深层链接
  4. 单击+创建新方案以深入链接应用程序
  5. 从下拉列表中选择您的应用程序,设置方案名称,输入在AndroidManifest.xml中传递的方案名称,设置主机名和路径
  6. 单击Create Scheme.



    E. g.如果您想深入链接以下链接 - https://www.adgyde.com/demo
    • Scheme:https.必须为Intent过滤器设置至少一个scheme属性
    • Host:www.adgdye.com
    • Path:/ demo,标识特定资源(路径以“/”开头)

    E. g.如果您想深入链接以下链接 - adgyde://demo/registration
    • Scheme:adgyde
    • Host:演示
    • Path:/注册

    通过此方案和详细信息,您可以获得自定义方案设置并使用相同的方案


  7. 现在启用广告系列的深层链接。单击设置选项
  8. 点击广告系列跟踪
  9. 点击+新广告系列以创建新广告系列,该广告系列用于启用深层链接
  10. 创建新广告系列后,点击加号(+)按钮
  11. 单击“启用深层链接”
  12. 从下拉列表中选择深层链接方案
  13. 输入应用程序类名称(活动名称),您希望在深层链接后进行操作
  14. 输入广告系列时点击桌面浏览器的数据网址,然后打开数据网址内容
  15. 复制自动生成的intent-filter并粘贴到您的AndroidManifest.xml中
  16. 点击“更新”按钮,使用深层链接更新广告系列。




深层链接是在提供个性化内容或将用户发送到应用程序内的特定活动时启动移动应用程序的行为。

1. Deep Link的工作原理
当用户单击Campaign链接时,如果安装了应用程序,则将使用深层链接打开应用程序并将用户定向到特定页面。如果未安装应用程序,则广告系列将照常运行,用户可以安装应用程序。

下图显示了深层链接方案。



2. 深层链接集成步骤
允许用户启用深层链接。我们在AdGyde控制台中提供用户界面。使用以下步骤,用户可以启用深层链接。

  1. 登录AdGyde控制台
  2. 单击设置选项
  3. 单击深层链接
  4. 单击+创建新方案以深入链接应用程序
  5. 从下拉列表中选择您的应用程序,设置方案名称,输入在AndroidManifest.xml中传递的方案名称,设置主机名和路径
  6. 单击Create Scheme.



    E. g.如果您想深入链接以下链接 - https://www.adgyde.com/demo
    • Scheme:https.必须为Intent过滤器设置至少一个scheme属性
    • Host:www.adgdye.com
    • Path:/ demo,标识特定资源(路径以“/”开头)

    E. g.如果您想深入链接以下链接 - adgyde://demo/registration
    • Scheme:adgyde
    • Host:演示
    • Path:/注册

    通过此方案和详细信息,您可以获得自定义方案设置并使用相同的方案


  7. 现在启用广告系列的深层链接。单击设置选项
  8. 点击广告系列跟踪
  9. 点击+新广告系列以创建新广告系列,该广告系列用于启用深层链接
  10. 创建新广告系列后,点击加号(+)按钮
  11. 单击“启用深层链接”
  12. 从下拉列表中选择深层链接方案
  13. 输入应用程序类名称(活动名称),您希望在深层链接后进行操作
  14. 输入广告系列时点击桌面浏览器的数据网址,然后打开数据网址内容
  15. 复制自动生成的intent-filter并粘贴到您的AndroidManifest.xml中
  16. 点击“更新”按钮,使用深层链接更新广告系列。



  17. 由于Unity只有一个屏幕,并且用户自己实现场景和屏幕,因此不会将深层链接数据传递到屏幕,而是用户可以在需要时提取数据。 要根据用户的判断获取数据进行处理,请使用以下功能:

    String data = AdgydeManager.SharedInstance.getDeepLinkData();



深层链接是在提供个性化内容或将用户发送到应用程序内的特定活动时启动移动应用程序的行为。

1. Deep Link的工作原理
当用户单击Campaign链接时,如果安装了应用程序,则将使用深层链接打开应用程序并将用户定向到特定页面。如果未安装应用程序,则广告系列将照常运行,用户可以安装应用程序。

下图显示了深层链接方案。



2. 深层链接集成步骤
允许用户启用深层链接。我们在AdGyde控制台中提供用户界面。使用以下步骤,用户可以启用深层链接。

  1. 登录AdGyde控制台
  2. 单击设置选项
  3. 单击深层链接
  4. 单击+创建新方案以深入链接应用程序
  5. 从下拉列表中选择您的应用程序,设置方案名称,输入在AndroidManifest.xml中传递的方案名称,设置主机名和路径
  6. 单击Create Scheme.



    E. g.如果您想深入链接以下链接 - https://www.adgyde.com/demo
    • Scheme:https.必须为Intent过滤器设置至少一个scheme属性
    • Host:www.adgdye.com
    • Path:/ demo,标识特定资源(路径以“/”开头)

    E. g.如果您想深入链接以下链接 - adgyde://demo/registration
    • Scheme:adgyde
    • Host:演示
    • Path:/注册

    通过此方案和详细信息,您可以获得自定义方案设置并使用相同的方案


  7. 现在启用广告系列的深层链接。单击设置选项
  8. 点击广告系列跟踪
  9. 点击+新广告系列以创建新广告系列,该广告系列用于启用深层链接
  10. 创建新广告系列后,点击加号(+)按钮
  11. 单击“启用深层链接”
  12. 从下拉列表中选择深层链接方案
  13. 输入应用程序类名称(活动名称),您希望在深层链接后进行操作
  14. 输入广告系列时点击桌面浏览器的数据网址,然后打开数据网址内容
  15. 复制自动生成的intent-filter并粘贴到您的AndroidManifest.xml中
  16. 点击“更新”按钮,使用深层链接更新广告系列。



  17. 由于Cordova只有一个屏幕,并且用户自己实现了多个屏幕,因此深度链接数据不会传递到屏幕,而是用户可以在需要时提取数据。 要根据用户的判断获取数据进行处理,请使用以下功能:

    function GetDLData() {
    AdGydeTracker.GetDeeplinkData(success, error);
    function success(data) {
    alert(data);
    }

    function error(error) {
    alert(JSON.stringify(error));
    }
    }




活动



事件是跟踪用户和移动应用程序之间交互的强大工具。
有3种事件,都是
  1. 简单的事件
  2. 计数事件
  3. 计算事件

1. 简单的事件
简单事件是没有参数的事件。 它可用于跟踪简单事件。 例如,如果您需要跟踪用户启动您的应用程序的次数。 只需在主要活动的onCreate()上添加一行即可。

public void onCreate() {
// fire simple event named "Launch my application"
AdGyde.onSimpleEvent("Launch my application");
}

简单事件可用于构建漏斗,其详细信息可在漏斗部分找到。

对于更复杂的事件跟踪 - 应考虑计算事件或计算事件。

2. 计数事件
Counting Event对于跟踪需要计数的事件非常有用。 例如,如果我们正在开发新闻应用程序。 该应用程序有三个类别,即本地新闻,国家新闻和国际新闻。 我们需要知道哪个类别最受欢迎,只需在点击监听器上实现以下代码即可。

/**
* Being triggered if "Local News" tab clicked.
*/
public void onCategoryLocalNewsClicked(View view) {
Map<String, String> params = new HashMap<String, String>();
// params.put(patrametre_name, value);
params.put("category", "local news");
AdGyde.onCountingEvent("selected category", params);
}

/**
* Being triggered if "National News" tab clicked.
*/
public void onCategoryNationalNewsClicked(View view) {
Map<String, String> params = new HashMap<String, String>();
// params.put(patrametre_name, value);
params.put("category", "national news");
AdGyde.onCountingEvent("selected category", params);
}

/**
* Being triggered if "International News" tab clicked.
*/
public void onCategoryInternationalNewsClicked(View view) {
Map<String, String> params = new HashMap<String, String>();
// params.put(patrametre_name, value);
params.put("category", "international news");
AdGyde.onCountingEvent("selected category", params);
}

由于事件不同且AdGyde Server需要区分事件正在计数事件,因此需要在具有指定类型的控制台中添加事件。

以下是在Console中添加计数事件的步骤
  1. 登录AdGyde控制台
  2. 单击“设置/事件”
  3. 点击事件列表上方的“创建”按钮
  4. 在app_name字段中选择您的应用程序
  5. 在event_id字段中输入“selected category”。 它应该与AdGyde.onEvent(String,Map <String,String>)的第一个参数相同
  6. 在parameter_name字段中输入“category”
  7. 选择comp_param_type字段的“Counting”项
  8. 单击“创建”按钮



3. 计算事件
计算事件可用于跟踪 累积 值。

例如,如果我们将横幅放在具有不同权重或成本的应用程序中,那么使用计算事件我们可以根据 指定的 权重知道每个横幅的贡献 。

/**
* Invoked when advertisement clicked.
*/
public void onAdvertismentClicked(Advertisement adv) {
Map<String, String> params = new HashMap<String, String>();
// First parameter is event name and second is value name which will be accumulated.
params.put("CPM", adv.getName());
// Second parameter is the value for its value name. Value must be integer type.
params.put(adv.getName(), "" + adv.getPrice());
// Trigger event where first parameter is event_id
AdGyde.onComputingEvent("CPM income", params);
}

计算事件使用2个参数。 第一个参数定义事件id说'CPM'是被累积的参数。 第二个参数定义参数值。 例如,新闻应用程序放置了2个横幅。 首先是'adv1',CPM是1美分。 第二是'adv2',CPM为5美分。'adv1'点击了5次,'adv2'点击了10次。 累计值为'adv1'= 1分* 5 = 5美分,'adv2'= 5美分* 10 = 50美分。

定义计算事件的过程类似于计数事件,但com_param_type应设置为“计算”。



4. 收入事件
有一个单独的收入,甚至可以用于跟踪通过应用程序产生的收入。 控制台中显示 仅 基于 此事件的收入也。

private void fireRevenueEvent() {
AdGyde.onRevenue(17);
}

5. 独特的活动
唯一事件对于跟踪在特定时间段内需要唯一计数的事件非常有用。 例如,如果我们开发新闻应用程序。 该应用程序有三个类别,即本地新闻,国家新闻和国际新闻

AdGyde提供三种类型的Unique Events
  1. onDailyUnique
  2. onPermanentUnique
  3. onCustomUnique

3种独特事件可用于不同的要求
  1. 要知道在给定日期有多少独特用户完成游戏阶段,应该使用onDailyUnique
  2. 要知道有多少独特用户在用户生命周期内完成游戏阶段,应该使用onPermanentUnique
  3. 要知道有多少独特用户在24小时内完成游戏阶段,应该使用onCustomUnique
对于需要实现代码的唯一事件
/**
* Daily Unique event allows to keep an event unique for current date
* When user completes Game Stage
*/
public void onGameStageCompleted(View view) {
Map<String, String> params = new HashMap<String, String>();
//The parameter being passed in unique event are in combination of ParamterName and Value
params.put("Level", "level_1");

// Event is triggered with EventId and Parameters prepared above, the same are passed in this function
AdGyde.onDailyUnique("GameLevelComplete", params);
}

/**
* Permanent Unique event allows to keep an event unique for user lifetime
*/
public void onGameStageCompletedUnique(View view) {
Map<String, String> params = new HashMap<String, String>();
//The parameter being passed in unique event are in combination of ParamterName and Value
params.put("Level", "level_1");

// Event is triggered with EventId and Parameters prepared above, the same are passed in this function
params.onPermanentUnique("GameLevelComplete", params);
}

/**
* Custom Unique event allows to keep an event unique for user defined time (hours)
*/
public void onCategoryInternationalNewsClicked(View view) {
Map<String, String> params = new HashMap<String, String>();
//The parameter being passed in unique event are in combination of ParamterName and Value
params.put("Level", "level_1");

// Event is triggered with EventId and Parameters prepared above, the same are passed in this function
// The third parameter (3) specifies that the Event will not be counted again before 3 hours
params.onCustomUnique("GameLevelComplete", params, 3);
}


由于事件不同且AdGyde Server需要区分事件是唯一事件,因此需要在具有指定类型的控制台中添加事件。

请按照以下说明创建独特的活动
  1. 登录AdGyde控制台
  2. 单击“设置/事件”
  3. 点击事件列表上方的“创建”按钮
  4. 在app_name字段中选择您的应用程序
  5. 在event_id字段中输入“GameLevelComplete”。 它应该与AdGyde.onEvent(String,Map,Boolean flag)的第一个参数相同
  6. 在parameter_name字段中输入“Level”
  7. 选择comp_param_type字段的“唯一事件”项
  8. 单击“创建”按钮


事件是跟踪用户和移动应用程序之间交互的强大工具。
有3种事件,都是
  1. 简单的事件
  2. 计数事件
  3. 计算事件

1. 简单的事件
简单事件是没有参数的事件。 它可用于跟踪简单事件。 例如,如果您需要跟踪用户启动您的应用程序的次数。 只需在主要活动的onCreate()上添加一行即可。

public void onCreate() {
// fire simple event named "Launch my application"
AdgydeDemo.SharedInstance.SimpleEvent("Launch my application");
}

简单事件可用于构建漏斗,其详细信息可在漏斗部分找到。

对于更复杂的事件跟踪 - 应考虑计算事件或计算事件。

2. 计数事件
Counting Event对于跟踪需要计数的事件非常有用。 例如,如果我们正在开发新闻应用程序。 该应用程序有三个类别,即本地新闻,国家新闻和国际新闻。 我们需要知道哪个类别最受欢迎,只需在点击监听器上实现以下代码即可。

/**
* Being triggered if "Local News" tab clicked.
*/
public void onCategoryLocalNewsClicked() {
Dictionary parameter = new Dictionary();
// parameter.Add (parameter_name, value);
parameter.Add (“Category”, “local News”);
// AdgydeDemo.SharedInstance.CountingEvent (eventid, parameter);
AdgydeDemo.SharedInstance.CountingEvent (“selected category”, parameter);
}

/**
* Being triggered if "National News" tab clicked.
*/
public void onCategoryNationalNewsClicked () {
Dictionary parameter = new Dictionary();
// parameter.Add (parameter_name, value);
parameter.Add (“Category”, “national News”);
// AdgydeDemo.SharedInstance.CountingEvent (eventid, parameter);
AdgydeDemo.SharedInstance.CountingEvent (“selected category”, parameter);
}

/**
* Being triggered if "International News" tab clicked.
*/
public void onCategoryInternationalNewsClicked () {
Dictionary parameter = new Dictionary();
// parameter.Add (parameter_name, value);
parameter.Add (“Category”, “InternationalNews”);
// AdgydeDemo.SharedInstance.CountingEvent (eventid, parameter);
AdgydeDemo.SharedInstance.CountingEvent (“selected category”, parameter);
}


由于事件不同且AdGyde Server需要区分事件正在计数事件,因此需要在具有指定类型的控制台中添加事件。

以下是在Console中添加计数事件的步骤
  1. 登录AdGyde控制台
  2. 单击“设置/事件”
  3. 点击事件列表上方的“创建”按钮
  4. 在app_name字段中选择您的应用程序
  5. 在event_id字段中输入“selected category”。 它应该与AdGyde.onEvent(String,Map <String,String>)的第一个参数相同
  6. 在parameter_name字段中输入“category”
  7. 选择comp_param_type字段的“Counting”项
  8. 单击“创建”按钮



3. 计算事件
计算事件可用于跟踪 累积 值。

例如,如果我们将横幅放在具有不同权重或成本的应用程序中,那么使用计算事件我们可以根据 指定的 权重知道每个横幅的贡献 。

/**
* Invoked when advertisement clicked.
*/
public void onAdvertismentClicked(Advertisement adv) {
Dictionary parameter = new Dictionary();
// First parameter is event name and second is value name which will be accumulated.
parameter.Add (“CPM”, adv.getName());
// Second parameter is the value for its value name. Value must be integer type.
parameter.Add(adv.getName(),adv.getPrice());
// Trigger event where first parameter is event_id
AdgydeDemo.SharedInstance.ComputingEvent("CPM income", parameter);
}

计算事件使用2个参数。 第一个参数定义事件id说'CPM'是被累积的参数。 第二个参数定义参数值。 例如,新闻应用程序放置了2个横幅。 首先是'adv1',CPM是1美分。 第二是'adv2',CPM为5美分。'adv1'点击了5次,'adv2'点击了10次。 累计值为'adv1'= 1分* 5 = 5美分,'adv2'= 5美分* 10 = 50美分。

定义计算事件的过程类似于计数事件,但com_param_type应设置为“计算”。



4. 收入事件
有一个单独的收入,甚至可以用于跟踪通过应用程序产生的收入。 控制台中显示 仅 基于 此事件的收入也。

private void fireRevenueEvent() {
AdgydeDemo.SharedInstance.OnRevenue(17);
}

5. 独特的活动
唯一事件对于跟踪在特定时间段内需要唯一计数的事件非常有用。 例如,如果我们开发新闻应用程序。 该应用程序有三个类别,即本地新闻,国家新闻和国际新闻

AdGyde提供三种类型的Unique Events
  1. onDailyUnique
  2. onPermanentUnique
  3. onCustomUnique

3种独特事件可用于不同的要求
  1. 要知道在给定日期有多少独特用户完成游戏阶段,应该使用onDailyUnique
  2. 要知道有多少独特用户在用户生命周期内完成游戏阶段,应该使用onPermanentUnique
  3. 要知道有多少独特用户在24小时内完成游戏阶段,应该使用onCustomUnique
对于需要实现代码的唯一事件
/**
* Daily Unique event allows to keep an event unique for current date
* When user completes Game Stage
*/
public void onGameStageCompleted() {
Dictionary params = new Dictionary();
//The parameter being passed in unique event are in combination of ParameterName and Value
params.Add(("Level", "level_1");

// Event is triggered with EventId and Parameters prepared above, the same are passed in this function
AdgydeDemo.SharedInstance.onDailyUnique("GameLevelComplete", params);
}

/**
* Permanent Unique event allows to keep an event unique for user lifetime
*/
public void onGameStageCompletedUnique() {
Dictionary params = new Dictionary();
//The parameter being passed in unique event are in combination of ParameterName and Value
params.Add("Level", "level_1");

// Event is triggered with EventId and Parameters prepared above, the same are passed in this function
AdgydeDemo.SharedInstance.onPermanentUnique("GameLevelComplete", params);
}

/**
* Custom Unique event allows to keep an event unique for user defined time (hours)
*/
public void onCategoryInternationalNewsClicked() {
Dictionary params = new Dictionary();
//The parameter being passed in unique event are in combination of ParamterName and Value
params.Add("Level", "level_1");

// Event is triggered with EventId and Parameters prepared above, the same are passed in this function
// The third parameter (3) specifies that the Event will not be counted again before 3 hours
AdgydeDemo.SharedInstance.onCustomUnique("GameLevelComplete", params, 3);
}


由于事件不同且AdGyde Server需要区分事件是唯一事件,因此需要在具有指定类型的控制台中添加事件。

请按照以下说明创建独特的活动
  1. 登录AdGyde控制台
  2. 单击“设置/事件”
  3. 点击事件列表上方的“创建”按钮
  4. 在app_name字段中选择您的应用程序
  5. 在event_id字段中输入“GameLevelComplete”。 它应该与AdGyde.onEvent(String,Map,Boolean flag)的第一个参数相同
  6. 在parameter_name字段中输入“Level”
  7. 选择comp_param_type字段的“唯一事件”项
  8. 单击“创建”按钮


事件是跟踪用户和移动应用程序之间交互的强大工具。
有3种事件,都是
  1. 简单的事件
  2. 计数事件
  3. 计算事件

1. 简单的事件
简单事件是没有参数的事件。 它可用于跟踪简单事件。 例如,如果您需要跟踪用户启动您的应用程序的次数。 只需在主要活动的onCreate()上添加一行即可。

function simpleEvent() {
// fire simple event named "Registration"
AdGydeTracker.simpleEvent("Registration");
window.plugins.toast.showShortBottom(
'Simple Event Triggered',
function(a){
console.log('toast success: ' + a)
},
function(b){
alert('toast error: ' + b)
}
);
}

简单事件可用于构建漏斗,其详细信息可在漏斗部分找到。

对于更复杂的事件跟踪 - 应考虑计算事件或计算事件。

2. 计数事件
Counting Event对于跟踪需要计数的事件非常有用。 例如,如果我们正在开发新闻应用程序。 该应用程序有三个类别,即本地新闻,国家新闻和国际新闻。 我们需要知道哪个类别最受欢迎,只需在点击监听器上实现以下代码即可。

function showToast(ToastText) {
window.plugins.toast.showShortBottom(
ToastText,
function(a){
console.log('toast success: ' + a)
},
function(b){
alert('toast error: ' + b)
}
);
}

/**
* Being triggered if "Local News" tab clicked.
*/
function countingEventLocal() {
// parameter to be passed {"parameter_name" : "value"}
var parameter={"Category":"local News"};
// AdGydeTracker.countingEvent(eventid, parameter);
AdGydeTracker.countingEvent("CountingEvent", parameter);

showToast('Counting Event Triggered');
}

/**
* Being triggered if "National News" tab clicked.
*/
function countingEventNational() {
// parameter to be passed {"parameter_name" : "value"}
var parameter={"Category":"National News"};
// AdGydeTracker.countingEvent(eventid, parameter);
AdGydeTracker.countingEvent("CountingEvent", parameter);

showToast('Counting Event Triggered');
}

/**
* Being triggered if "International News" tab clicked.
*/
function countingEventInternatonal() {
// parameter to be passed {"parameter_name" : "value"}
var parameter={"Category":"International News"};
// AdGydeTracker.countingEvent(eventid, parameter);
AdGydeTracker.countingEvent("CountingEvent", parameter);

showToast('Counting Event Triggered');
}


由于事件不同且AdGyde Server需要区分事件正在计数事件,因此需要在具有指定类型的控制台中添加事件。

以下是在Console中添加计数事件的步骤
  1. 登录AdGyde控制台
  2. 单击“设置/事件”
  3. 点击事件列表上方的“创建”按钮
  4. 在app_name字段中选择您的应用程序
  5. 在event_id字段中输入“selected category”。 它应该与AdGyde.onEvent(String,Map <String,String>)的第一个参数相同
  6. 在parameter_name字段中输入“category”
  7. 选择comp_param_type字段的“Counting”项
  8. 单击“创建”按钮



3. 计算事件
计算事件可用于跟踪 累积 值。

例如,如果我们将横幅放在具有不同权重或成本的应用程序中,那么使用计算事件我们可以根据 指定的 权重知道每个横幅的贡献 。

/**
* Invoked when advertisement clicked.
*/
function onAdvertismentClicked(name, price) {

// First Array entry is for Parameter Name and Sub-event name which will be accumulated.
// Second Array entry is for Sub-event name and its accumulating value. Value must be integer type.
var parameters={"CPM":name, name:price};

// Trigger event where first parameter is event_id
AdGydeTracker.computingEvent("CPM income", parameters);

showToast('Computing Event Triggered');
}

计算事件使用2个参数。 第一个参数定义事件id说'CPM'是被累积的参数。 第二个参数定义参数值。 例如,新闻应用程序放置了2个横幅。 首先是'adv1',CPM是1美分。 第二是'adv2',CPM为5美分。'adv1'点击了5次,'adv2'点击了10次。 累计值为'adv1'= 1分* 5 = 5美分,'adv2'= 5美分* 10 = 50美分。

定义计算事件的过程类似于计数事件,但com_param_type应设置为“计算”。



4. 收入事件
有一个单独的收入,甚至可以用于跟踪通过应用程序产生的收入。 控制台中显示 仅 基于 此事件的收入也。

/**
* Invoked when Revenue needs to be calculated.
*/
function revenueEvent() {
// Record successful Revenue for 17 Units (Units can be defined on Console)
AdGydeTracker.eventRevenue(17);
showToast('In App Revenue Event Triggered');
}

5. 独特的活动
唯一事件对于跟踪在特定时间段内需要唯一计数的事件非常有用。 例如,如果我们开发新闻应用程序。 该应用程序有三个类别,即本地新闻,国家新闻和国际新闻

AdGyde提供三种类型的Unique Events
  1. onDailyUnique
  2. onPermanentUnique
  3. onCustomUnique

3种独特事件可用于不同的要求
  1. 要知道在给定日期有多少独特用户完成游戏阶段,应该使用onDailyUnique
  2. 要知道有多少独特用户在用户生命周期内完成游戏阶段,应该使用onPermanentUnique
  3. 要知道有多少独特用户在24小时内完成游戏阶段,应该使用onCustomUnique
对于需要实现代码的唯一事件
/**
* Daily Unique event allows to keep an event unique for current date
* When user completes Game Stage
*/
function onGameStageCompleted() {
//The parameter being passed in unique event are in combination of ParameterName and Value
var parameters={"Level":"level_1"};

// Event is triggered with EventId and Parameters prepared above, the same are passed in this function
AdGydeTracker.eventDailyUnique("GameLevelComplete", parameters);

showToast('Daily Unique Event Triggered');
}

/**
* Permanent Unique event allows to keep an event unique for user lifetime
*/
public void onGameStageCompletedUnique() {
//The parameter being passed in unique event are in combination of ParameterName and Value
var parameters={"Level":"level_1"};

// Event is triggered with EventId and Parameters prepared above, the same are passed in this function
AdGydeTracker.eventPermanentUnique("GameLevelComplete",parameters);

showToast('Permanent Unique Event Triggered');
}

/**
* Custom Unique event allows to keep an event unique for user defined time (hours)
*/
public void onCategoryInternationalNewsClicked() {
//The parameter being passed in unique event are in combination of ParameterName and Value
var parameters={"Level":"level_1"};

// Event is triggered with EventId and Parameters prepared above, the same are passed in this function
// The third parameter (3) specifies that the Event will not be counted again before 3 hours
AdGydeTracker.eventCustomUnique("GameLevelComplete",parameters, 3);

showToast('Custom Unique Event Triggered');
}


由于事件不同且AdGyde Server需要区分事件是唯一事件,因此需要在具有指定类型的控制台中添加事件。

请按照以下说明创建独特的活动
  1. 登录AdGyde控制台
  2. 单击“设置/事件”
  3. 点击事件列表上方的“创建”按钮
  4. 在app_name字段中选择您的应用程序
  5. 在event_id字段中输入“GameLevelComplete”。 它应该与AdGyde.onEvent(String,Map,Boolean flag)的第一个参数相同
  6. 在parameter_name字段中输入“Level”
  7. 选择comp_param_type字段的“唯一事件”项
  8. 单击“创建”按钮



货币化


两个部分的货币化妥协
  1. 应用内收入
  2. 成本

应用内收入
应用内收入是由任何类型的应用内事件生成的收入类型。应用内收入被认为适合衡量广告系列的效果。

如何设置应用内收入事件

假设App Developer可以在购买屏幕上创建新的应用内购买事件,并创建到购买屏幕的深层链接。然后它开始一个活动。用户点击应用内事件的跟踪链接并进行购买。然后,App Developer可以衡量广告系列的效果并进行合适的付款。

App Developer通常将应用内收入视为衡量和评估广告系列效果的合适参数。
  1. App Developer分配收益事件,并将Diwali Gift的值设置为代码为Rs.50
  2. 在您的应用程序中实现深层链接功能
  3. 登录AdGyde控制台
  4. 为此促销创建广告系列以及深层链接和延迟深层链接功能,以便将用户直接带到“购买”屏幕
  5. 当用户拥有应用程序时,他将被带到购买屏幕,但如果用户没有应用程序,则安装应用程序,然后将其带到购买屏幕
  6. 在控制台中,我们可以看到此广告系列生成的收入

成本
AdGyde还可以帮助广告客户在制作广告系列时设置面板中每个广告系列的费用。设置此选项后,广告客户可以了解根据广告系列为每个合作伙伴支付的金额。 AdGydes方面的计算很简单 - 将成本与广告系列生成的安装相乘

通过单个活动产生的成本和收入之间的比较可以很容易地判断通过渠道和活动获得的用户的盈利能力。



队列分析


AdGyde的同期报告提供了在不同时间范围内查看和比较每个多个群组的不同指标的功能。输入过滤条件(如日期范围,版本,位置和渠道)可用于细分用户数,也可根据有价值的用户在控制台上查看每日/每周收入趋势。

要比较基于地理位置的 广告系列的 每个城市的用户质量,请按以下步骤操作
  1. 登录AdGyde控制台
  2. 从客户端列表中选择应用程序
  3. 选择条件:
    1. 选择日期范围
    2. 选择广告系列名称
    3. 将城市名称保留为全部
  4. 选择“城市”选项以用于分组依据
  5. 单击“查询”以填充数据
  6. 控制台将队列报告显示为折线图:
    1. Y轴:会话计数
    2. X轴:日期

广告系列跟踪


根据定义,广告系列跟踪是指跟踪安装进度的方法。广告系列跟踪有助于分析新用户,回复用户,应用内事件,为广告联盟和发布商生成的应用内收入。

要跟踪特定合作伙伴的安装,合作伙伴应与AdGyde集成。 如果未添加合作伙伴,请联系 support@adgyde.com ,我们将帮助您的合作伙伴立即登机。

合作伙伴与AdGyde集成后,您现在可以继续通过控制台设置广告系列。

设置广告系列的步骤
  1. 登录AdGyde控制台
  2. 转到左侧导航栏中“设置”标题下的“广告系列跟踪”
  3. 使用“新广告系列”按钮为发布商创建新广告系列
  4. 选择需要广告系列的应用程序
  5. 输入广告系列名称
  6. 选择所需的单击“归因窗口”
  7. 保存广告系列设置
  8. 单击广告系列列表中频道下的添加按钮以完成广告系列配置
  9. 从集成合作伙伴列表中选择“通道/发布者”
  10. 选择广告系列的广告系列类型,费用
  11. 如果需要自定义参数,可以在跟踪URL中配置相同的参数
  12. AdGyde控制台创建跟踪网址为 'http://log2.adgyde.com/intf/b/1/u?c=20190514123454&p=123&clickid={clickid}'
  13. 选择是否需要安装回发 - 勾选“启用S2S安装回发后”复选框
  14. 配置将发送给发布者的应用内事件。输入发布者事件令牌作为事件值
  15. 如果应用程序中需要深层链接,也可以在此处配置“深层链接”,“启用深层链接”
  16. 选择要传递的Activity和Class Name的Scheme,Class Name,可以将下面的代码直接复制到清单中
  17. 保存广告系列并与发布者共享跟踪网址

这个怎么运作
一旦发布者获得了具有所需参数的跟踪链接,他就可以使用该链接捆绑并创建自己的广告系列网址,以便进一步向子发布商提供。 No Parameter是必需的但没有至少1个参数,回发将没有用。 发布商需要确保在结尾处生成点击ID,并将其传递给AdGyde跟踪网址,以便在回发中返回相同内容以进行完全匹配。

跟踪URL支持下面列出的多个参数
  1.   {clickid} = 单击标识符
  2.   {pub} = 运行广告系列的发布商/子发布商
  3.   {cost} = 广告商为此广告系列产生的费用
  4.   {sub1} = 自定义参数 1
  5.   {sub2} = 自定义参数 2
  6.   {sub3} = 自定义参数 3
  7.   {sub4} = 自定义参数 4

当用户点击发布者网址时,发布服务器会替换AdGyde网址中的点击ID和其他参数值。 然后点击AdGyde网址,AdGyde服务器会记录发送的详细信息,并使用提供的详细信息在Google Play商店中打开应用程序页面。 之后的相同细节将传递给AdGyde SDK,并在需要时通过回发返回到Publisher。

AdGyde跟踪网址 :
http://log2.adgyde.com/intf/b/1/u?c=20190514862311&p=1046&clickid={clickid}&cost={Cost}&pub={Publisher}&sub1={sub1}&sub2={sub2}&sub3={sub3}&sub4={sub4}



安卓卸载跟踪



AdGyde的卸载跟踪 功能 允许您跟踪指定应用程序的卸载次数。 卸载是一个重要的索引,可帮助您跟踪用户的质量,从而跟踪广告系列。

1. 要求
AdGyde SDK集成的Android应用程序,对于相同的应用程序Firebase项目的服务器密钥

笔记:-
  1. Android SDK 3.1.0版支持卸载跟踪
  2. 如果您使用多个InstanceIDListener服务,则可以创建自己的Listener并将令牌传递给AdGyde的API


2. 启用AdGyde卸载跟踪的步骤

2.1. 没有Firebase消息传递的应用程序
如果您的Android应用程序未使用Firebase Messaging Service,请按照以下说明操作:

  • 获取Firebase项目的服务器密钥(第3节
  • 输入AdGyde仪表板的服务器密钥。 (第4节
  • 在您的应用上配置Firebase消息传递。 (第5节
  • 如上所述,将以下代码添加到您的应用程序:
  • 将Firebase依赖项添加到应用程序的build.gradle文件中,如下所示:

    dependencies {
    // . . .
    compile 'com.google.firebase:firebase-messaging:19.0.1'
    // . . .
    }

  • 将这些行添加到应用程序标记内的应用程序的AndroidManifest.xml文件中:

    <application
    <!-- ... -->
    <service android:name="com.adgyde.android.FIIDService" exported="false" >
    <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
    </service>
    <!-- ... -->
    </application>

2.2. Firebase消息集成的应用程序
如果您的应用中集成了Firebase通知,请按照以下说明操作:

  • 获取Firebase项目的服务器密钥。 (第3节
  • 输入AdGyde仪表板的服务器密钥。 (第4节
  • 如上所述,将以下代码添加到您的应用程序:
  • 在InstanceIDListener Service的onTokenRefresh方法(扩展com.google.firebase.iid.FirebaseInstanceIdService的类)中,在重写方法onTokenRefresh中调用我们的API,如下例所示:

public class FIIDService extends FirebaseMessagingService {
private static final String TAG = "FIIDService";
@Override
public void onNewToken(String token) {
super.onNewToken(token);
try {
String refreshedToken = token;
if (!TextUtils.isEmpty(refreshedToken)){
AdGyde.onTokenRefresh(refreshedToken);
Log.d(TAG, "onTokenRefresh Refreshed token : " + refreshedToken);
}
} catch(Exception e){
e.printStackTrace();
}
}
}

3. 获取Firebase服务器密钥
  1. 打开Firebase控制台: https://console.firebase.google.com
  2. 创建Firebase Android应用程序项目(如果您尚未这样做)。 有关详情,请访问以下链接: https://firebase.google.com/docs/notifications/android/console-audience#add_firebase_to_your_app
  3. 打开Firebase控制台: https://console.firebase.google.com
  4. 创建项目后,通过从所有列出的项目中选择项目来打开项目页面
  5. 导航到项目设置(单击页面左侧窗格上“概述”旁边的齿轮)
  6. 在“云消息传递”选项卡下,您可以看到可能用于FCM / GCM的发件人ID)以及两个服务器密钥,如下所示



  7. 记下服务器密钥(长密钥而不是旧服务器密钥),它将在AdGyde的仪表板中输入以进行卸载跟踪

4. 在AdGyde的仪表板上输入服务器密钥
  1. 登录AdGyde控制台
  2. 设置时钟 - >卸载左侧导航菜单。


  3. 输入您在前面提供的区域中复制/记录的Firebase服务器密钥


5. 在应用程序上配置Firebase-Messaging
按照列出的以下步骤操作,或者访问Google的firebase集成链接
https://firebase.google.com/docs/cloud-messaging/android/client

  1. 下载项目的JSON文件:google-services.json并将其保存在应用程序的模块目录下,如果您没有此文件,可以从Firebase控制台的“项目设置”下载该文件
  2. 将Firebase-Messaging依赖项添加到项目中。 将规则添加到根级build.gradle文件以包含google-services插件:

    buildscript {
    // ...
    dependencies {
    // ...
    classpath 'com.google.gms:google-services:4.3.0'
    // ADD THIS LINE HERE
    }
    }

  3. 在项目的模块Gradle文件(通常是app / build.gradle)中,在文件底部添加apply plugin行以启用Gradle插件,并在依赖项块中添加依赖项

    apply plugin: 'com.android.app'
    android {
    // ...
    }

    dependencies {
    // ...
    compile 'com.google.firebase:firebase-messaging:19.0.1'
    // ADD THIS LINE AT THE BOTTOM OF THIS BLOCK
    }
    .
    .
    .
    apply plugin: 'com.google.gms.google-services'
    // ADD THIS LINE AT THE BOTTOM OF THIS FILE

    如果遇到“找不到。。”错误,请确保您在Android SDK Manager中安装了最新的Google Repository以解决相同问题

6. 将ProGuard与卸载跟踪结合使用
如果您的项目使用的是ProGaurd,则需要注意AdGyde SDK功能和Google Firebase Messaging Service功能不会被混淆,因为以下规则例外需要在ProGaurd文件中添加

-dontwarncom.adgyde.android.**
-keep public class com.google.firebase.iid.FirebaseInstanceId {
public *;
}


7. 测试Android卸载跟踪
卸载跟踪的测试非常简单。
无论Android应用程序是在Google Play上运行,等待提交还是在商店外,测试将保持不变,只需从设备卸载应用程序即可。

新应用程序的卸载事件最多需要24小时才会显示在仪表板的卸载趋势部分




AdGyde的卸载跟踪 功能 允许您跟踪指定应用程序的卸载次数。 卸载是一个重要的索引,可帮助您跟踪用户的质量,从而跟踪广告系列。

1. 要求
AdGyde SDK集成的Android应用程序,对于相同的应用程序Firebase项目的服务器密钥

笔记:-
  1. Android SDK 3.1.0版支持卸载跟踪
  2. 如果您使用多个InstanceIDListener服务,则可以创建自己的Listener并将令牌传递给AdGyde的API


2. 启用AdGyde卸载跟踪的步骤

2.1. 没有Firebase消息传递的应用程序
如果您的Android应用程序未使用Firebase Messaging Service,请按照以下说明操作:

  • 获取Firebase项目的服务器密钥(第3节
  • 输入AdGyde仪表板的服务器密钥。 (第4节
  • 在您的应用上配置Firebase消息传递。 (第5节
  • 如上所述,将以下代码添加到您的应用程序:
  • 将Firebase依赖项添加到应用程序的build.gradle文件中,如下所示:

    dependencies {
    // . . .
    compile 'com.google.firebase:firebase-messaging:19.0.1'
    // . . .
    }

  • 将这些行添加到应用程序标记内的应用程序的AndroidManifest.xml文件中:

    <application
    <!-- ... -->
    <service android:name="com.adgyde.android.FIIDService" exported="false" >
    <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
    </service>
    <!-- ... -->
    </application>

2.2. Firebase消息集成的应用程序
如果您的应用中集成了Firebase通知,请按照以下说明操作:

  • 获取Firebase项目的服务器密钥。 (第3节
  • 输入AdGyde仪表板的服务器密钥。 (第4节
  • 如上所述,将以下代码添加到您的应用程序:
  • 在InstanceIDListener Service的onTokenRefresh方法(扩展com.google.firebase.iid.FirebaseInstanceIdService的类)中,在重写方法onTokenRefresh中调用我们的API,如下例所示:

public class GameInit : MonoBehaviour {

void Start() {
//Init_Method for FCM clint side();
AdgydeManager.SharedInstance.InitialiseFirebase();

// Used for with FCM
StartCoroutine(StartFCMService(20.0f));
}

public void InitialiseFirebase() {
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenRecieved;
Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageRecieved;
}

public void OnTokenRecieved(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
AdgydeManager.SharedInstance.Token = token.Token.ToString();
Debug.Log("UNITY : FCM Token "+ AdgydeManager.SharedInstance.Token);
StartCoroutine(CallDelay(45.0f));
}

public void OnMessageRecieved(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
Debug.Log("Recieved a new message from : " + e.Message.From);
}

IEnumerator CallDelay(float waitTime) {
Debug.Log("UNITY : In delay Method ");
yield return new WaitForSeconds(waitTime);

Debug.Log("UNITY : In delay Method After 2.5f");

AdgydeManager.SharedInstance.getUserID();
DebugLog.text = AdgydeManager.SharedInstance.UserID;
AdgydeManager.SharedInstance.AdgydeToken();
}

public void getUSERID() {
AdgydeManager.SharedInstance.getUserID();
DebugLog.text = AdgydeManager.SharedInstance.UserID;
AdgydeManager.SharedInstance.AdgydeToken();
}
}

有关详细信息,请参阅链接: "https://firebase.google.com/docs/cloud-messaging/unity/client"

3. 获取Firebase服务器密钥
  1. 打开Firebase控制台: https://console.firebase.google.com
  2. 创建Firebase Android应用程序项目(如果您尚未这样做)。 有关详情,请访问以下链接: https://firebase.google.com/docs/notifications/android/console-audience#add_firebase_to_your_app
  3. 创建项目后,通过从所有列出的项目中选择项目来打开项目页面
  4. 导航到项目设置(单击页面左侧窗格上“概述”旁边的齿轮)
  5. 在“云消息传递”选项卡下,您可以看到可能用于FCM / GCM的发件人ID)以及两个服务器密钥,如下所示



  6. 记下服务器密钥(长密钥而不是旧服务器密钥),它将在AdGyde的仪表板中输入以进行卸载跟踪

4. 在AdGyde的仪表板上输入服务器密钥
  1. 登录AdGyde控制台
  2. 设置时钟 - >卸载左侧导航菜单。


  3. 输入您在前面提供的区域中复制/记录的Firebase服务器密钥


5. 在应用程序上配置Firebase-Messaging
按照列出的以下步骤操作,或者访问Google的firebase集成链接
https://firebase.google.com/docs/cloud-messaging/android/client

  1. 下载项目的JSON文件:google-services.json并将其保存在应用程序的模块目录下,如果您没有此文件,可以从Firebase控制台的“项目设置”下载该文件
  2. 将Firebase-Messaging依赖项添加到项目中。 将规则添加到根级build.gradle文件以包含google-services插件:

    buildscript {
    // ...
    dependencies {
    // ...
    classpath 'com.google.gms:google-services:4.3.0'
    // ADD THIS LINE HERE
    }
    }

  3. 在项目的模块Gradle文件(通常是app / build.gradle)中,在文件底部添加apply plugin行以启用Gradle插件,并在依赖项块中添加依赖项

    apply plugin: 'com.android.app'
    android {
    // ...
    }

    dependencies {
    // ...
    compile 'com.google.firebase:firebase-messaging:19.0.1'
    // ADD THIS LINE AT THE BOTTOM OF THIS BLOCK
    }

    如果遇到“找不到。。”错误,请确保您在Android SDK Manager中安装了最新的Google Repository以解决相同问题

6. 将ProGuard与卸载跟踪结合使用
如果您的项目使用的是ProGaurd,则需要注意AdGyde SDK功能和Google Firebase Messaging Service功能不会被混淆,因为以下规则例外需要在ProGaurd文件中添加

-dontwarncom.adgyde.android.**
-keep public class com.google.firebase.iid.FirebaseInstanceId {
public *;
}


7. 测试Android卸载跟踪
卸载跟踪的测试非常简单。
无论Android应用程序是在Google Play上运行,等待提交还是在商店外,测试将保持不变,只需从设备卸载应用程序即可。

新应用程序的卸载事件最多需要24小时才会显示在仪表板的卸载趋势部分




AdGyde的卸载跟踪 功能 允许您跟踪指定应用程序的卸载次数。 卸载是一个重要的索引,可帮助您跟踪用户的质量,从而跟踪广告系列。

1. 要求
AdGyde SDK集成的Android应用程序,对于相同的应用程序Firebase项目的服务器密钥

笔记:-
  1. Android SDK 3.1.0版支持卸载跟踪
  2. 如果您使用多个InstanceIDListener服务,则可以创建自己的Listener并将令牌传递给AdGyde的API


2. 启用AdGyde卸载跟踪的步骤

2.1. 没有Firebase消息传递的应用程序
如果您的Android应用程序未使用Firebase Messaging Service,请按照以下说明操作:

  • 获取Firebase项目的服务器密钥(第3节
  • 输入AdGyde仪表板的服务器密钥。 (第4节
  • 在您的应用上配置Firebase消息传递。 (第5节
  • 如上所述,将以下代码添加到您的应用程序:
  • 将Firebase依赖项添加到应用程序的build.gradle文件中,如下所示:

    dependencies {
    // . . .
    compile 'com.google.firebase:firebase-messaging:19.0.1'
    // . . .
    }

  • 将这些行添加到应用程序标记内的应用程序的AndroidManifest.xml文件中:

    <application
    <!-- ... -->
    <service android:name="com.adgyde.android.FIIDService" exported="false" >
    <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
    </service>
    <!-- ... -->
    </application>

2.2. Firebase消息集成的应用程序
如果您的应用中集成了Firebase通知,请按照以下说明操作:

  • 获取Firebase项目的服务器密钥。 (第3节
  • 输入AdGyde仪表板的服务器密钥。 (第4节
  • 如上所述,将以下代码添加到您的应用程序:
  • 在InstanceIDListener Service的onTokenRefresh方法(扩展com.google.firebase.iid.FirebaseInstanceIdService的类)中,在重写方法onTokenRefresh中调用我们的API,如下例所示:

function onFcmToken()
{
//FCMPlugin.onTokenRefresh( onTokenRefreshCallback(token));
//Note that this callback will be fired every time a new token is generated, including the first time.
FCMPlugin.onTokenRefresh(
function(token){
window.plugins.toast.showShortBottom('tokenrefresh-----',
function(a) {
console.log('Token---Success ' + token)
},
function(b) {
alert('toast error: ' + token)
}
);
}
);

//FCMPlugin.getToken( successCallback(token), errorCallback(err) );
//Keep in mind the function will return null if the token has not been established yet.
FCMPlugin.getToken(
function(token){
AdGydeTracker.onFcmToken(token);
window.plugins.toast.showShortBottom('getToken-----',
function(a) {
console.log('Token Success: ' + token)
},
function(b) {
alert('toast error: ' + token)
}
);
}
);
}

3. 获取Firebase服务器密钥
  1. 打开Firebase控制台: https://console.firebase.google.com
  2. 创建Firebase Android应用程序项目(如果您尚未这样做)。 有关详情,请访问以下链接: https://firebase.google.com/docs/notifications/android/console-audience#add_firebase_to_your_app
  3. 创建项目后,通过从所有列出的项目中选择项目来打开项目页面
  4. 导航到项目设置(单击页面左侧窗格上“概述”旁边的齿轮)
  5. 在“云消息传递”选项卡下,您可以看到可能用于FCM / GCM的发件人ID)以及两个服务器密钥,如下所示



  6. 记下服务器密钥(长密钥而不是旧服务器密钥),它将在AdGyde的仪表板中输入以进行卸载跟踪

4. 在AdGyde的仪表板上输入服务器密钥
  1. 登录AdGyde控制台
  2. 设置时钟 - >卸载左侧导航菜单。


  3. 输入您在前面提供的区域中复制/记录的Firebase服务器密钥


5. 在应用程序上配置Firebase-Messaging
按照列出的以下步骤操作,或者访问Google的firebase集成链接
https://firebase.google.com/docs/cloud-messaging/android/client

  1. 下载项目的JSON文件:google-services.json并将其保存在应用程序的模块目录下,如果您没有此文件,可以从Firebase控制台的“项目设置”下载该文件
  2. 将Firebase-Messaging依赖项添加到项目中。 将规则添加到根级build.gradle文件以包含google-services插件:

    buildscript {
    // ...
    dependencies {
    // ...
    classpath 'com.google.gms:google-services:4.3.0'
    // ADD THIS LINE HERE
    }
    }

  3. 在项目的模块Gradle文件(通常是app / build.gradle)中,在文件底部添加apply plugin行以启用Gradle插件,并在依赖项块中添加依赖项

    apply plugin: 'com.android.app'
    android {
    // ...
    }

    dependencies {
    // ...
    compile 'com.google.firebase:firebase-messaging:19.0.1'
    // ADD THIS LINE AT THE BOTTOM OF THIS BLOCK
    }

    如果遇到“找不到。。”错误,请确保您在Android SDK Manager中安装了最新的Google Repository以解决相同问题

6. 将ProGuard与卸载跟踪结合使用
如果您的项目使用的是ProGaurd,则需要注意AdGyde SDK功能和Google Firebase Messaging Service功能不会被混淆,因为以下规则例外需要在ProGaurd文件中添加

-dontwarncom.adgyde.android.**
-keep public class com.google.firebase.iid.FirebaseInstanceId {
public *;
}


7. 测试Android卸载跟踪
卸载跟踪的测试非常简单。
无论Android应用程序是在Google Play上运行,等待提交还是在商店外,测试将保持不变,只需从设备卸载应用程序即可。

新应用程序的卸载事件最多需要24小时才会显示在仪表板的卸载趋势部分