protonemedia / laravel-analytics-event-tracking
Laravel包,轻松将事件发送到Google Analytics
Requires
- php: ^8.1 || ^8.2
- illuminate/bus: ^9.0 || ^10.0
- illuminate/http: ^9.0 || ^10.0
- illuminate/queue: ^9.0 || ^10.0
- illuminate/validation: ^9.0 || ^10.0
- theiconic/php-ga-measurement-protocol: ^2.7
Requires (Dev)
- mockery/mockery: ^1.4.4
- nesbot/carbon: ^2.66
- orchestra/testbench: ^7.0 || ^8.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-01-09 10:49:41 UTC
README
⚠️ 此包不再维护且不支持GA4。
Laravel Analytics Event Tracking
https://twitter.com/pascalbaljet/status/1257926601339277312
Laravel包,轻松将事件发送到 Google Analytics
赞助此包!
❤️ 我们自豪地通过开发Laravel包并免费提供来支持社区。如果这个包为您节省了时间,或者您在专业上依赖它,请考虑 赞助维护和开发。跟踪问题和拉取请求需要时间,但我们愿意提供帮助!
Laravel Splade
您听说过Laravel Splade吗? 🤩
它是Inertia.js的魔法加上Blade的简单性。Splade提供了一个极其简单的方法来使用Blade模板构建单页应用程序。除了那种SPA感觉之外,它还带有十多个组件,可以让您的应用程序闪闪发光并使其交互式,而无需离开Blade。
功能
安装
您可以通过Composer安装此包
composer require protonemedia/laravel-analytics-event-tracking
配置
发布配置和视图文件
php artisan vendor:publish --provider="ProtoneMedia\AnalyticsEventTracking\ServiceProvider"
在.env
文件或config/analytics-event-tracking.php
文件中设置您的Google Analytics跟踪ID。
GOOGLE_ANALYTICS_TRACKING_ID=UA-01234567-89
自1.2.1版本起,此包支持Google Analytics 4。如果您将新Google Analytics 4属性升级到新版本,请重新发布视图文件。
Blade指令
此包包含一个@sendAnalyticsClientId
指令,它将GA前端中的客户端ID发送到您的Laravel后端并存储在会话中。
它使用了Axios HTTP 库来发送异步 POST 请求。选择 Axios 是因为它默认在 Laravel 的 resources/js/bootstrap.js
文件中提供。
在初始化/配置 GA 之后,将指令添加到某个位置。只有在 Client ID
尚未存储或刷新时,才会发送 POST 请求。
<script async src="https://#/gtag/js?id=UA-01234567-89"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-01234567-89', { 'send_page_view': false }); gtag('event', 'page_view', { 'event_callback': function() { @sendAnalyticsClientId }}); </script>
如果您不使用 Axios,您必须自己实现这个调用。默认端点是 /gaid
,但您可以在配置文件中自定义它。请求由 ProtoneMedia\AnalyticsEventTracking\Http\StoreClientIdInSession
类处理。请确保还发送 CSRF 令牌。
向 Google Analytics 广播事件
将 ShouldBroadcastToAnalytics
接口添加到您的事件中,您就准备好了!您无需手动绑定任何监听器。
<?php namespace App\Events; use App\Order; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics; class OrderWasCreated implements ShouldBroadcastToAnalytics { use Dispatchable, SerializesModels; public $order; public function __construct(Order $order) { $this->order = $order; } }
处理框架和第三方事件
如果您无法添加 ShouldBroadcastToAnalytics
接口来处理事件,您可以在 EventServiceProvider
中使用 DispatchAnalyticsJob
监听器手动注册它们。
<?php namespace App\Providers; use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use ProtoneMedia\AnalyticsEventTracking\Listeners\DispatchAnalyticsJob; class EventServiceProvider extends ServiceProvider { /** * The event listener mappings for the application. * * @var array */ protected $listen = [ Registered::class => [ SendEmailVerificationNotification::class, DispatchAnalyticsJob::class, ], ]; }
自定义广播
有两种额外的方法可以让您自定义对 Google Analytics 的调用。
使用 withAnalytics
方法,您可以与基础包交互以设置其他参数。查看 TheIconic\Tracking\GoogleAnalytics\Analytics
类以了解可用的方法。
使用 broadcastAnalyticsActionAs
方法,您可以自定义事件操作的名称。默认情况下,我们使用没有类名的类名。此方法还让您访问基础 Analytics
类。
<?php namespace App\Events; use App\Order; use TheIconic\Tracking\GoogleAnalytics\Analytics; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics; class OrderWasCreated implements ShouldBroadcastToAnalytics { use Dispatchable, SerializesModels; public $order; public function __construct(Order $order) { $this->order = $order; } public function withAnalytics(Analytics $analytics) { $analytics->setEventValue($this->order->sum_in_cents / 100); } public function broadcastAnalyticsActionAs(Analytics $analytics) { return 'CustomEventAction'; } }
在 HTTP 请求外处理 Client ID
您可能想要跟踪在 HTTP 请求之外发生的事件,例如在队列作业或处理第三方回调/钩子时。让我们继续使用 Order
例子。当 Order
被创建时,您可以将 Client ID
保存到数据库中。
<?php namespace App\Http\Controllers; use App\Order; use App\Http\Requests\CreateOrderRequest; use ProtoneMedia\AnalyticsEventTracking\Http\ClientIdRepository; class CreateOrderController { public function __invoke(CreateOrderRequest $request, ClientIdRepository $clientId) { $attributes = $request->validated(); $attributes['google_analytics_client_id'] = $clientId->get(); return Order::create($attributes); } }
当您收到支付提供者的 webhook 并分派 OrderWasPaid
事件时,您可以在事件中使用 withAnalytics
方法来重用 google_analytics_client_id
<?php namespace App\Events; use App\Order; use TheIconic\Tracking\GoogleAnalytics\Analytics; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics; class OrderWasPaid implements ShouldBroadcastToAnalytics { use Dispatchable, SerializesModels; public $order; public function __construct(Order $order) { $this->order = $order; } public function withAnalytics(Analytics $analytics) { $analytics->setClientId($this->order->google_analytics_client_id); } }
其他配置
您可以在 config/analytics-event-tracking.php
文件中配置一些其他设置
use_ssl
:使用 SSL 来调用 GAis_enabled
:将其设置为false
以防止事件发送到 GAanonymize_ip
:匿名化用户的 IP 地址的最后几位send_user_id
:将认证用户的 ID 发送到 GAqueue_name
:指定一个队列来执行对 GA 的调用client_id_session_key
:存储 Client ID 的会话密钥http_uri
:HTTP URI 将 Client ID 发布到(来自 Blade 指令)
测试
composer test
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
其他Laravel包
Laravel Blade On Demand
:Laravel包,用于在内存中编译Blade模板。Laravel Cross Eloquent Search
:Laravel包,用于在多个Eloquent模型中进行搜索。Laravel Eloquent Scope as Select
:停止在PHP中重复Eloquent查询作用域和约束。此包允许您通过将它们作为子查询添加来重用查询作用域和约束。Laravel Eloquent Where Not
:此Laravel包允许您翻转/反转Eloquent作用域,或实际上任何查询约束。Laravel FFMpeg
:此包为Laravel提供FFmpeg集成。文件的存储由Laravel的文件系统处理。Laravel Form Components
:Blade组件,可用于使用Tailwind CSS自定义表单和Bootstrap 4快速构建表单。支持验证、模型绑定、默认值、翻译,包括默认供应商样式和完全可定制!Laravel Mixins
:一组Laravel实用工具。Laravel Paddle
:支持webhooks/events的Paddle.com API集成,针对Laravel。Laravel Verify New Email
:此包增加了对新电子邮件地址验证的支持:当用户更新其电子邮件地址时,新地址在被验证之前不会替换旧地址。Laravel WebDAV
:Laravel文件系统的WebDAV驱动程序。
安全
如果您发现任何安全相关的问题,请通过电子邮件pascal@protone.media联系,而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。
TreeWare
此包是TreeWare。如果您在生产中使用它,那么我们要求您为世界买一棵树以感谢我们的工作。通过为TreeWare森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。