iferas93/laravel-analytics-laravel-10

dev-master 2023-03-15 09:08 UTC

This package is auto-updated.

Last update: 2024-09-15 12:12:50 UTC


README

Latest Stable Version Latest Unstable Version License Total Downloads Building

快速入门

composer require ipunkt/laravel-analytics

您可以使用 Analytics 门面。

在您的 .env 文件中添加以下变量,并根据您的喜好设置它们

ANALYTICS_PROVIDER=GoogleAnalytics
ANALYTICS_TRACKING_ID=your-tracking-id

我们支持将整个配置作为环境变量。请参阅配置部分。

最后,在您的 </head> 关闭标签上方放置此代码

{!! Analytics::render() !!}

您现在已启用 Google Analytics。享受吧!

安装

将以下行添加到您的 composer.json 中

"require": {
	"ipunkt/laravel-analytics": "~3.0"
}

Ipunkt\LaravelAnalytics\AnalyticsServiceProvider::class, 添加到 app/config/app.php 中的 providers

可选:将 'Analytics' => Ipunkt\LaravelAnalytics\AnalyticsFacade::class, 添加到 app/config/app.php 中的 aliases

运行 php artisan vendor:publish --provider="Ipunkt\LaravelAnalytics\AnalyticsServiceProvider"

然后编辑 config 中的 analytics.php 以满足您的需求。我们在服务提供程序中进行配置合并,因此您的本地设置将保持不变。

对于 laravel 7.x,请使用 3.x 版本。

"require": {
	"ipunkt/laravel-analytics": "~3.0"
}

对于 laravel 6.x,请使用 2.x 版本。

"require": {
	"ipunkt/laravel-analytics": "~2.0"
}

对于 php < 7.2 或 laravel < 6.0,请使用 1.x 版本。

"require": {
	"ipunkt/laravel-analytics": "~1.0"
}

配置

提供程序
要使用的提供程序,可能的提供程序有:GoogleAnalyticsNoAnalytics

Google Analytics

tracking_id
跟踪 ID,您的 Google Analytics 跟踪 ID
tracking_domain
跟踪域名,未设置或设置为 "auto" 以自动回退
tracker_name
跟踪器名称
display_features
启用显示功能插件,可能的值:(true|false)
anonymize_ip
匿名化用户 IP,可能的值:(true|false)
auto_track
自动跟踪当前页面视图,可能的值:(true|false)
debug
启用调试模式,可能的值:(true|false)
optimize_id
启用 [Google Analytics](https://support.google.com/optimize/answer/6262084) 的优化功能

基于环境的配置

您可以通过更改/设置 .env 文件中的环境变量来配置整个设置。(如果您使用 Laravel Dusk,则为 .env.dusk 文件)。

以下是配置值与基于环境名称的映射

tracking_id
ANALYTICS_TRACKING_ID
tracking_domain
ANALYTICS_TRACKING_DOMAIN (auto)
tracker_name
ANALYTICS_TRACKER_NAME (t0)
display_features
ANALYTICS_DISPLAY_FEATURES (false)
anonymize_ip
ANALYTICS_ANONYMIZE_IP (true)
auto_track
ANALYTICS_AUTO_TRACK (true)
debug
ANALYTICS_DEBUG (本地环境上为 true)
optimize_id
ANALYTICS_OPTIMIZE_ID

此行为已从版本 1.3.2 中集成。

其他

disable_script_block
您可以通过配置值禁用脚本块生成,可能的值:(true|false),默认为 false。

使用方法

在控制器操作(或任何其他地方)中使用以下语句跟踪事件或页面视图

//	tracking the current page view
Analytics::trackPage();	// only necessary if `auto_track` is false or Analytics::disableAutoTracking() was called before

//	tracking an event
Analytics::trackEvent('category', 'action');

//	tracking a custom line
Analytics::trackCustom("ga('send', ......"); // this line will be added within the tracking script

您可以为跟踪设置可选的宣传活动

// creating a campaign
$campaign = new \Ipunkt\LaravelAnalytics\Data\Campaign('Sales2016');
$campaign->setMedium('web')->setSource('IT Magazine')->setKeyword('Hot stuff');
Analytics::setCampaign($campaign);

您可以为跟踪设置用户 ID

// creating a campaign
Analytics::setUserId($userIdentificationHash);

在您的视图或布局模板(例如 blade 模板)中使用以下语句

{!! Analytics::render() !!}

对于 Google Analytics,您应该在 body 标签下方放置此语句

<body>{!! Analytics::render() !!}

依赖注入

您可以通过引用接口来注入分析提供程序

class PageController extends Controller
{
	public function show(\Ipunkt\LaravelAnalytics\Contracts\AnalyticsProviderInterface $analytics)
	{
		$analytics->setUserId(md5(\Auth::user()->id)); // identical to Analytics::setUserId(md5(\Auth::user()->id));
		return view('welcome');
	}
}

如何使用

GoogleAnalytics 提供程序自动控制 本地环境 的行为以进行测试目的。

有一个内置的提供程序称为 NoAnalytics。这是用于测试环境的,不跟踪任何内容。因此,您不需要重写代码,只需在选择 provider 中的特殊环境配置时选择此 provider 即可。

在不使用JavaScript的情况下追踪测量

  1. 登录Google Analytics并创建自定义定义。在那里创建自定义指标。例如:邮件打开,整型,最小值:0 和最大值:1 这将作为 metric1 可用。

  2. 在你的邮件模板(或页面模板)中,你必须创建一个追踪图像

    <img src="{!! Analytics::trackMeasurementUrl('metric1', '1', new Event, new Campaign, md5($user)) !!}" width="1" height="1" style="background-color: transparent; border: 0 none;" />

  3. 就是这样

内容安全策略

从版本1.3开始支持集成内容安全策略。

请在提供者接口实例上调用 withCSP()

然后使用额外的包(或自行实现) martijnc/php-csp,并在你的中间件或JavaScript发送控制器中使用以下代码

use Phpcsp\Security\ContentSecurityPolicyHeaderBuilder;

$policy = new ContentSecurityPolicyHeaderBuilder();

// Set the default-src directive to 'none'
$policy->addSourceExpression(ContentSecurityPolicyHeaderBuilder::DIRECTIVE_DEFAULT_SRC, 'none');

// Add the nonce to the script-src directive
$policy->addNonce(ContentSecurityPolicyHeaderBuilder::DIRECTIVE_SCRIPT_SRC, $analytics->withCSP()->cspNonce());

foreach ($policy->getHeaders(true) as $header) {
    header(sprintf('%s: %s', $header['name'], $header['value']));
}

结果看起来像这样

array (size=1)
  0 => 
    array (size=2)
      'name' => string 'Content-Security-Policy' (length=23)
      'value' => string 'default-src 'none'; script-src 'nonce-RandomNonceStringFromAnalyticsProvider';' (length=58)

在渲染你的分析脚本时,nonce 属性将自动添加到你的脚本标签中。

API文档

有关正确使用方法的详细信息,请参阅 Ipunkt\LaravelAnalytics\Contracts\AnalyticsProviderInterface.php

Analytics::render()

上下文:Blade模板、视图

用于渲染正确的JavaScript代码。它必须在所有布局文件中存在,以便追踪你的操作和页面调用。

/**
 * returns the javascript code for embedding the analytics stuff
 *
 * @return string
 */
public function render();

Analytics::trackPage()

上下文:控制器、操作代码

用于追踪页面视图。

/**
 * track an page view
 *
 * @param null|string $page
 * @param null|string $title
 * @param null|string $hittype
 * @return void
 */
public function trackPage($page, $title, $hittype);

Analytics::trackEvent()

上下文:控制器、操作代码

用于追踪事件

/**
 * track an event
 *
 * @param string $category
 * @param string $action
 * @param null|string $label
 * @param null|int $value
 * @return void
 */
public function trackEvent($category, $action, $label, $value);

Analytics::trackCustom()

上下文:控制器、操作代码

用于追踪嵌入的分析代码中的自定义脚本行。

/**
 * track any custom code
 *
 * @param string $customCode
 * @return void
 */
public function trackCustom($customCode);

Analytics::enableDisplayFeatures()

上下文:控制器、操作代码

启用显示功能,覆盖配置设置 display_features

/**
 * enable display features
 *
 * @return GoogleAnalytics
 */
public function enableDisplayFeatures();

Analytics::disableDisplayFeatures()

上下文:控制器、操作代码

禁用显示功能,覆盖配置设置 display_features

/**
 * disable display features
 *
 * @return GoogleAnalytics
 */
public function disableDisplayFeatures();

Analytics::enableAutoTracking()

上下文:控制器、操作代码

启用自动追踪,覆盖配置设置 auto_track

/**
 * enable auto tracking
 *
 * @return GoogleAnalytics
 */
public function enableAutoTracking();

Analytics::disableAutoTracking()

上下文:控制器、操作代码

禁用自动追踪,覆盖配置设置 auto_track

/**
 * disable auto tracking
 *
 * @return GoogleAnalytics
 */
public function disableAutoTracking();

Analytics::trackMeasurementUrl()

上下文:Blade模板、视图

有时你必须追踪测量,例如打开电子邮件通讯。在那里你完全没有JavaScript。

/**
 * assembles an url for tracking measurement without javascript
 *
 * e.g. for tracking email open events within a newsletter
 *
 * @param string $metricName
 * @param mixed $metricValue
 * @param \Ipunkt\LaravelAnalytics\Data\Event $event
 * @param \Ipunkt\LaravelAnalytics\Data\Campaign $campaign
 * @param string|null $clientId
 * @param array $params
 * @return string
 */
public function trackMeasurementUrl($metricName, $metricValue, Event $event, Campaign $campaign, $clientId = null, array $params = array());

Analytics::setUserId($userId)

上下文:控制器、操作代码

向分析追踪添加用户ID。这个用户ID是一个用户相关的唯一ID。但请注意,你不应该与特定的用户有直接关系 - 它应该对每个用户来说是唯一的,以便进行分析。

此用户追踪是在 Google Analytics 中实现的。

/**
 * sets an user id for user tracking
 *
 * @param string $userId
 * @return AnalyticsProviderInterface
 */
public function setUserId($userId);

Analytics::unsetUserId()

上下文:控制器、操作代码

也可以删除用户ID。

/**
 * unset an user id
 *
 * @return AnalyticsProviderInterface
 */
public function unsetUserId(); 

Analytics::setCampaign($campaign)

上下文:控制器、操作代码

向当前追踪添加活动。

此活动追踪在 Google Analytics 中有文档记录。

/**
 * sets a campaign
 *
 * @param Campaign $campaign
 * @return AnalyticsProviderInterface
 */
public function setCampaign(Campaign $campaign);

Analytics::unsetCampaign()

上下文:控制器、操作代码

也可以删除活动。

/**
 * unset a possible given campaign
 *
 * @return AnalyticsProviderInterface
 */
public function unsetCampaign();

Analytics::enableScriptBlock()

上下文:控制器、操作代码

启用 <script>...</script> 块标签的渲染。默认启用,因此您不需要调用此方法。

/**
 * render script block
 *
 * @return GoogleAnalytics
 */
public function enableScriptBlock();

Analytics::disableScriptBlock()

上下文:控制器、操作代码

禁用 <script>...</script> 块标签的渲染。

/**
 * do not render script block
 *
 * @return GoogleAnalytics
 */
public function disableScriptBlock();

Analytics::enableEcommerceTracking()

上下文:控制器、操作代码

启用电商追踪。

/**
 * enable ecommerce tracking
 *
 * @return AnalyticsProviderInterface
 */
public function enableEcommerceTracking();

Analytics::disableEcommerceTracking()

上下文:控制器、操作代码

禁用电商追踪。

/**
 * disable ecommerce tracking
 *
 * @return AnalyticsProviderInterface
 */
public function disableEcommerceTracking();

Analytics::ecommerceAddTransaction()

上下文:控制器、操作代码

将电商交易添加到追踪代码中。

/**
 * ecommerce tracking - add transaction
 *
 * @param string $id
 * @param null|string $affiliation
 * @param null|float $revenue
 * @param null|float $shipping
 * @param null|float $tax
 * @param null|string $currency
 *
 * @return AnalyticsProviderInterface
 */
public function ecommerceAddTransaction($id, $affiliation = null, $revenue = null, $shipping = null, $tax = null, $currency = null);

支持使用货币值定义的 多货币 追踪,请在此处定义货币值 这里

Analytics::ecommerceAddItem()

上下文:控制器、操作代码

将电商商品添加到追踪代码中。

/**
 * ecommerce tracking - add item
 *
 * @param string $id
 * @param string $name
 * @param null|string $sku
 * @param null|string $category
 * @param null|float $price
 * @param null|int $quantity
 * @param null|string $currency
 *
 * @return AnalyticsProviderInterface
 */
public function ecommerceAddItem($id, $name, $sku = null, $category = null, $price = null, $quantity = null, $currency = null);

支持使用货币值定义的 多货币 追踪,请在此处定义货币值 这里

Analytics::setCustom()

上下文:控制器、操作代码

添加自定义设置。

/**
 * sets custom dimensions
 *
 * @param string|array $dimension
 * @param null|string $value
 * @return AnalyticsProviderInterface
 */
public function setCustom($dimension, $value = null)

Analytics::withCSP()

上下文:控制器、操作代码

启用内容安全策略功能。

/**
 * enables Content Security Polity and sets nonce
 *
 * @return AnalyticsProviderInterface
 */
public function withCSP();

Analytics::withoutCSP()

上下文:控制器、操作代码

禁用内容安全策略功能。

/**
 * disables Content Security Polity
 *
 * @return AnalyticsProviderInterface
 */
public function withoutCSP();

Analytics::cspNonce()

上下文:控制器、操作代码

返回为内容安全策略头生成的nonce。

/**
 * returns the current Content Security Policy nonce
 *
 * @return string|null
 */
public function cspNonce();

Analytics::setOptimizeId()

/**
 * set a custom optimize ID (the GTM-XXXXXX code)
 *
 * @param string $optimizeId
 *
 * @return AnalyticsProviderInterface
 */
public function setOptimizeId($optimizeId);