React Native的分析


React Native的分析让你可以轻松地将数据发送到任何分析或营销工具,而无需每次都学习、测试或实现新的API。

Segment的所有库都是开源的,你可以查看GitHub上的React Native分析,或看其他的列表细分浏览器和服务器库了。

你可以订阅释放饲料保持最新版本的更新。

在云模式下,Analytics-React-Native作为一个普通的Segment库。在设备模式下,它封装了片段Analytics-iOSAnalytics-Android库,并根据用户的平台加载适当的移动库。因此,Analytics-React-Native将这两个移动库作为依赖项包括在内。

分析-反应-本机和唯一标识符

任何分析平台最重要的部分之一就是能够一致且准确地识别用户。要做到这一点,平台必须在设备上分配并保存某种形式的身份识别,这样你才能有效地分析用户行为。这对于漏斗转换分析和留存率分析尤为重要。

iOS中的唯一标识符

苹果限制了用户生成和使用唯一id的方式,以帮助保护最终用户的隐私。Segment生成id,同时保持符合苹果的政策。

在iOS 5之前,开发者可以使用uniqueIdentifier,这是一个特定于硬件的序列号,在不同的应用程序、供应商和安装中是一致的。不过,从iOS 5开始,苹果不赞成访问这个标识符。在iOS 6中,苹果引入了identifierForVendor这可以保护终端用户免受跨应用程序识别。在iOS 7中限制访问设备的MAC地址,许多开发人员将其作为一种变通方法,以获得类似的特定于设备的序列号来替换uniqueIdentifier

Segment的iOS库通过生成UUID并将其存储在磁盘上来支持iOS 7+。这符合苹果所要求的隐私政策,保持兼容性,还能在多人使用同一设备的情况下进行正确跟踪,因为UUID可以重新生成。

Android中的唯一标识符

Analytics-React-Native也收集广告标识由Play Services提供。这是应该用于广告目的的ID。该值设置为context.device.advertisingId

确保将Play Services Ads库作为应用程序的依赖项。

Analytics-React-Native也收集Android ID作为context.device.id。有些目的地依赖于此字段作为Android ID。检查您使用的目的地的文档,并考虑是否真的想重写缺省值。

API调用在Analytics-React-Native中排队

Analytics-React-Native库队列API调用并批量上传它们。这限制了网络呼叫的数量,并有助于节省用户设备的电池。

当发送事件时,库将其保存到磁盘。当队列大小达到您指定的最大大小(默认为20)时,库将刷新队列并在单个批处理中上传事件。由于数据会立即保存,所以即使应用程序被终止或操作系统崩溃,数据也不会丢失。

对于设备模式目的地,队列行为可能不同。例如,Mixpanel的SDK队列事件,然后只有当应用程序进入后台时才刷新它们。

这就是为什么即使您在调试器中看到事件,设备模式目标可能还没有在仪表板上显示它们,因为它们可能仍然在移动SDK的队列中。相反的情况也可能发生:Device-mode目标SDK可能会在Segment发送其队列之前将事件发送到它的服务器,因此事件可能会在出现在Segment调试器之前显示在目标仪表板上。

开始

React-Native版本要求

您必须使用React版本0.62或更高版本。

iOS配置

你应该使用CocoaPods (推荐)来管理iOS的安装和依赖项。要将CocoaPods添加到您的应用程序中,请遵循以下步骤这些指令

安装SDK

Segment建议你使用NPM来安装React Native的Analytics。这允许您创建具有特定目标的构建,并使安装和升级库和任何组件变得更加容易。

首先,添加@segment / analytics-react-native依赖你的依赖关系然后使用链接react-native-cli,使用下面的示例命令。

美元纱添加@segment / analytics-react-native美元纱react-native链接

然后在应用程序中按照下面的示例设置库。

等待分析设置(YOUR_WRITE_KEY,{//记录屏幕视图自动!recordScreenViews:真正的,//自动记录某些应用事件!trackAppLifecycleEvents:真正的})

接下来,确保在您要使用的任何文件中导入Analytics-React-Native。你可以使用进口语句类似于下面的例子。

进口分析@segment / analytics-react-native

动态框架手动安装

强烈推荐使用Cocoapods。分段不支持发送数据捆绑,设备模式集成,除非您使用Cocoapods。

如果你绝对不能使用Cocoapods,你可以手动安装我们的动态框架,允许你发送数据到Segment,并让Segment发送它到启用云模式的目的地。

手动安装Analytics-React-native:

  1. 添加analytics-ios作为一个NPM依赖:纱添加@segment / analytics-ios@github: segmentio / analytics-ios
  2. 一般选项卡,搜索嵌入二进制文件并添加Analytics.framework嵌入Analytics.framework”></li>
        </ol>
        <div class=

    请注意:如果选择不使用依赖管理器,则必须定期手动更新所有文件。

使用设备模式打包目的地

默认情况下,analytic - react - native首先将您的所有数据发送到Segment服务器,这将数据转发到任何工具上,您从Segment web应用程序启用。默认情况下,它不打包任何外部目的地sdk。这被称为使用“云模式”,它有助于减少项目的规模。

然而,为了正确地运行,一些目的地要求您在项目中包含可以在用户设备上执行的代码。这被称为“设备模式”。其他目的地提供了设备模式的SDK,但仍能在云模式下工作(功能减少)。

你可以阅读关于连接模式的更多信息在Destination文档中。

提示!Segment建议您仅在需要使用特定于设备的特性时才使用Device-mode目标,这样您就可以减少应用程序的大小。

要使用设备模式目标,需要将目标的SDK添加到项目中。你可以在Segment应用程序的目的地信息页面中找到这些信息。任何带有设备模式选项的移动目的地都包含关于如何捆绑SDK的信息。

它们通常采取依赖管理器命令的形式,就像下面的NPM例子。

纱添加@segment / analytics-react-native -{bugsnag,分支,谷歌分析}

添加目标依赖项之后,将其注册到Analytics-React中。这告诉我们

进口分析@segment / analytics-react-native进口Bugsnag@segment / analytics-react-native-bugsnag进口分支@segment / analytics-react-native-branch进口重火力点@segment / analytics-react-native-firebase等待分析设置(YOUR_WRITE_KEY,{//添加任何设备模式的目标。使用:(Bugsnag,分支,重火力点]/ /……})

现在已经安装了这个库,并且设置了一些sdk,您就可以学习片段跟踪方法了。

跟踪方法

识别

确定电话让你把用户和他们的行为联系起来,并记录他们的特征。它包括一个惟一的用户ID,以及您所知道的关于它们的任何可选特征。

Segment建议您在用户首次创建帐户和更新信息时拨打Identify电话。如果用户可以退出你的应用程序,你应该调用识别当用户重新登录时。

analytic - react - native在它自己的后台线程上工作,所以它永远不会阻塞UI的主线程或调用线程。

请注意:段自动分配一个anonymousId在您识别用户之前。的用户标识是跨设备连接匿名活动的工具。

下面的示例Identify调用通过用户的唯一用户ID(您在数据库中通过该用户ID认识他们)来识别用户,并使用a标记他们的名字电子邮件特征。

分析识别(用户的id,{电子邮件:jsmith@example.com的名字:约翰。史密斯})

Identify方法有以下参数:

用户标识字符串 此用户的数据库ID。如果还不知道用户是谁,可以省略用户标识并记录特征。你可以在确定参考
特征JSONMap,可选 一本你了解用户特点的字典,比如他们的电子邮件的名字。你可以在识别文档

当您使用用户标识,库将该ID写入磁盘,以便在以后的调用中使用。这个ID可以在用户卸载应用或调用时被删除重置

浏览识别方法有效载荷段标识规范

跟踪

然后跟踪调用允许您记录用户执行的操作。每个动作都会触发Segment所称的“事件”,该事件也可以有相关的属性。

提示!Analytics-React-Native可以使用Segment 's自动跟踪一些常见事件本地移动规范,例如应用程序安装,应用程序更新应用程序打开。在几个经常使用的段目的地中,属性跟踪需要这些事件。集trackAppLifecycleEvents真正的在初始化期间启用此特性。

分析设置(writeKey,{trackAppLifecycleEvents:真正的})

你应该追踪能够指示你的手机应用成功的事件签约,物品购买书签条。Segment建议你在刚开始的时候追踪一些重要的事件。您可以随时添加更多!

下面的示例Track调用告诉我们一个用户刚刚触发了物品购买事件,其中记载"赫拉克利斯之剑"和收入2.95。

分析跟踪(物品购买,{:赫拉克勒斯的剑,收入:2.95})

跟踪事件属性可以是您想要记录的任何内容。在这种情况下,项目和收入。

Track调用有以下字段:

事件字符串 事件的名称。Segment建议你给事件起一个人类可读的名字,按照对象-动作的顺序,比如歌曲播放状态更新
属性JSONMap,可选 事件属性字典。如果事件是产品添加对于cart,它可能具有如下属性价格productType

你可以阅读更多关于Track呼叫域关于Track调用的Segment Spec页面

屏幕

电话屏幕让您记录每当用户看到您的移动应用程序的屏幕,以及可选的额外信息页面正在查看。这和页面调用你会用在非移动用户上。

记录一个屏幕事件当用户打开或导航到一个新的屏幕在你的应用程序。这可能是一个视图,片段,对话框或活动取决于你的应用程序。

下面的Screen调用示例显示了一个用户查看了Photo Feed,并且该页面是私有的。

分析屏幕(照片给,{提要类型:私人})

屏幕Call包含以下字段:

的名字字符串 例如,屏幕的名称注册首页
属性JSONMap,可选 用于屏幕的属性字典。一个屏幕照片给可能有这样的属性提要类型排序顺序

您可以阅读更多关于Screen调用域的信息关于屏幕呼叫的Segment Spec页面

集团

集团电话让您关联识别用户用户组。组可以是公司、组织、客户、项目或团队。新万博app2.0下载该电话还允许您记录该组织的自定义特征,如行业或员工数量。

Group调用对于像这样的工具很有用对讲机,提前Totango,因为它将用户绑定到集团其他的用户。

下面的示例Group调用将当前用户添加到myGroup组,并添加名称和描述。

分析集团(myGroup,{的名字:Initech,描述:会计软件})

集团Call包含以下字段:

groupId字符串 数据库中此组的ID。
特征JSONMap,可选 一本你所了解的群体特征的字典。喜欢的东西:的名字网站

中可以了解关于Group方法的更多信息,包括组调用有效负载分组呼叫的段规格页面

别名

您可以使用别名调用将一个标识与另一个标识链接起来。这是一种高级方法,但是需要正确地管理用户身份一些目的地。

Mixpanel年它用于将一个匿名用户与一个已确认的用户在注册后关联起来。为只有,如果您的用户切换id,您可以使用' alias '来重命名' userId '。

例子别名电话:

分析别名(一些新的id)

别名Call包含以下字段:

newId字符串 要映射到的用户的newId。

要了解关于Alias方法的更多信息,包括别名调用有效负载,请通读别名调用的段规格页面

配置

配置控件的不同策略的一组属性分析实例。您可以使用设置方法如下所示:

分析设置(YOUR_WRITE_KEY,{/ /……})
writeKey字符串 你的部分来源写关键

本机配置

您还可以使用本机Analytics API通过调用来配置Analytics实例analytics.useNativeConfiguration ()在JavaScript代码中。这可以防止Analytics实例等待额外的配置。

您应该将调用包装在一个条件下,如下面的示例所示。

进口分析@segment / analytics-react-native;如果(!分析准备好了){//检查分析是否已经准备好;如果不是,我们可以安全地调用' useNativeConfiguration '分析useNativeConfiguration();}

实用方法

重置

重置方法清除当前用户和组的库内部存储。这对于用户在同一台设备上以不同身份登录和退出的应用程序很有用。

下面的示例代码清除关于用户的所有信息。

分析重置()

Reset不会清除队列中的事件,队列中剩余的事件将在下次应用启动时发送。你可能想打个电话冲洗在你调用Reset之前。

请注意:每次你打电话重置,下一次打开应用程序时,会生成一个新的anonymmousid,这可能会影响你处理的每月跟踪用户(MTUs)的数量。

冲洗

默认情况下,库在刷新(发送)事件之前会在队列中收集20个事件,但您可以修改这个数字。

你可以设置flushAt1在事件发生时发送事件,而不是分批发送事件。这种方法使用更多的电池。

等待分析设置(YOUR_WRITE_KEY,{flushAt:1})

你也可以手动冲洗队列:

分析别名(glenncoco)分析冲洗()

日志记录

要查看数据通过SDK的跟踪,可以使用调试方法:

等待分析设置(YOUR_WRITE_KEY,{调试:真正的})

默认情况下,调试日志记录是禁用的。

应用程序生命周期跟踪

Analytics-React-Native可以使用Segment 's自动跟踪一些常见事件本地移动规范,例如应用程序安装,应用程序更新应用程序打开。在几个经常使用的段目的地中,属性跟踪需要这些事件。集trackAppLifecycleEvents真正的在初始化期间启用此特性。

等待分析设置(YOUR_WRITE_KEY,{trackAppLifecycleEvents:真正的})

向上下文添加数据

在某些情况下,您可能希望向上下文对象在Segment消息有效负载中。这对于为没有其他逻辑位置可以添加的事件(例如在Identify、Screen或Group中)添加上下文或会话数据非常有用。

分析识别(布兰登,,{上下文:{括号:,loginFailures:3.}})

传入的数据上下文字典(如上面的示例所示)将与此事件的上下文对象中已经存在的数据合并。

阻止特定事件到达目的地

在某些情况下,您可能不希望将事件发送到特定的云模式目的地。属性可以在每个事件的基础上阻止来自目的地的事件集成对象,如下面的示例所示。了解更多关于这里使用集成对象过滤数据

分析跟踪(MyEvent,,{集成:{Mixpanel年:}})

默认情况下,事件会被发送到任何当前在Segment web应用中启用的云模式目的地。你可以通过添加一个排除列表来覆盖这个发送,就像上面的例子一样。在这个例子中,事件没有到达Mixpanel目的地。

提示!integration对象中的项是区分大小写的并且必须与实际的目标名称匹配。当正确的名称不清楚时,许多目的地文档页面包括可接受的名称列表。

身份和隐私

选择退出

根据应用的受众(游戏邦注:如儿童)或应用销售的国家(游戏邦注:如欧盟),你可能需要允许用户选择退出应用中的分析数据收集。

控件可以关闭到所有目的地(包括Segment本身)的转发禁用方法。

分析禁用()

如果用户在以后选择返回,则可以使用启用方法。

分析启用()

当您禁用Segment库时,所有的数据收集方法(跟踪,识别等)停止运行;但是,它不会删除初始化的库。如果你捆绑自动收集数据的设备模式sdk,或者在Segment之外,这些会继续运行。Segment建议,当用户选择退出时,您在每个打包的SDK中调用一个disable方法,以确保所有自动数据收集停止。

匿名的IP

Segment为设备模式(iOS, Android, Analytics.js和Xamarin)事件自动收集IP地址。如果不希望在目的地(以及S3等存储目的地)中记录被跟踪用户的IP,可以设置事件的IPcontext.ip字段0.0.0.0。段服务器不记录库的客户端IP地址,如果context.ip字段已设置。

设置IDFA

有些目的地,特别是手机归类工具(如Kochava),要求你包含用户的IDFA(广告商的标识符)才能正常运行。在调试器中的段调用中,IDFA显示为context.device.advertisingId

段不再自动收集中的IDFAAnalytics-React-Native 1.3.0版本版本后来。您必须收集段外的IDFA。你可以使用许多不同的NPM包来获得这个值,但是Segment建议你使用官方支持react-native-idfa

有了IDFA或其他标识符后,请使用setIDFA方法设置context.device.advertisingId如下面的例子所示。

进口分析@segment/分析-反应-本地的;分析setIDFA(“123”);

使用自定义的anonymousID

你可能想要使用自定义anonymousID更好地与部署中的其他系统集成。属性覆盖默认值是实现此目的的最佳方法选项参数。analytics.identify,如下面的例子所示。

分析识别(布兰登,,{anonymousId:0123456789})

发送推送通知

React Native并没有提供一个官方的JavaScript API来处理推送通知,所以Analytics for React Native也没有提供这样的API。但是,您可以通过使用底层的原生SDK来解决这个问题。

React Native推送通知

对于发送推送通知的服务,您首先需要按照以下步骤创建一个Push SSL证书。然后,您希望将应用程序委托配置为如下代码所示,并替换段源代码写入键。

-(保龄球)应用程序:(UIApplication*)应用程序didFinishLaunchingWithOptions:(NSDictionary*)launchOptions{SEGAnalyticsConfiguration*配置=(SEGAnalyticsConfigurationconfigurationWithWriteKey:@“YOUR_WRITE_KEY”];//使用launchOptions跟踪被点击的通知配置launchOptions=launchOptions;(SEGAnalyticssetupWithConfiguration:配置];如果([[UIApplicationsharedApplication]respondstoselectorismemberofclass:@ selector(registerForRemoteNotifications))){UIUserNotificationType类型=UIUserNotificationTypeAlert|UIUserNotificationTypeSound|UIUserNotificationTypeBadge;UIUserNotificationSettings*设置=(UIUserNotificationSettingssettingsForTypes:类型类别:];[[UIApplicationsharedApplication]registerUserNotificationSettings:设置];[[UIApplicationsharedApplication]registerForRemoteNotifications];}其他的{UIRemoteNotificationType类型=UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeBadge;[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:类型];}返回是的;}-(无效)应用程序:(UIApplication*)应用程序didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{[[SEGAnalyticssharedAnalytics]registeredForRemoteNotificationsWithDeviceToken:deviceToken];}//应用程序在前台运行时收到通知-(无效)应用程序:(UIApplication*)应用程序didReceiveRemoteNotification:(NSDictionary*)用户信息{[[SEGAnalyticssharedAnalytics]receivedRemoteNotification:用户信息];}// iOS 8+-(无效)应用程序:(UIApplication*)应用程序didRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings{//注册接收通知(应用程序registerForRemoteNotifications];}

React Native推送通知

如果你在移动目的地使用Device-mode,你总是可以从该工具的原生SDK中访问功能。

为了确保使用与我们相同的目标实例,可以注册一个侦听器,以便在目标就绪时通知您。如果目的地收到通知,则同步调用;如果目的地尚未就绪,则异步调用。

分析=分析(myActivity)//通常' this '就足够了。分析onIntegrationReady(“Crittercism”,回调(){@Override公共无效onReady(对象实例){// Crittercism只使用静态方法,所以返回的实例为null。CrittercismleaveBreadcrumb();}});分析onIntegrationReady(“Mixpanel年”,回调(){@Override公共无效onReady(对象实例){MixpanelAPImixpanelAPI=(MixpanelAPI)实例;mixpanelAPIclearSuperProperties();}});

用于返回的目的地无效,它们只是使用一个共享实例。你可以直接调用SDK。有了这个API,您就可以保证它们首先已经初始化,如果您决定更改仪表板上的目标设置,它们将在这里反映出来。

分析onIntegrationReady(BundledIntegrationFLURRY,回调(){@Override公共无效onReady(对象实例){// Flurry只使用静态方法,所以返回的实例是null。FlurrysetLogEnabled(真正的);}});

最后更改:2020年11月13日



开始分段

细分是将你的网站和手机应用数据整合到300多个分析和增长工具中的最简单方法。
创建免费帐户