agp/base-utils

包包含用于所有项目的基类。

1.1.3 2022-07-14 19:49 UTC

README

Base Utils

介绍

为Laravel提供实用功能和基类包。

包含

  • 类 GEOIP:通过IP数据返回位置。
  • 类 Utils:包含在项目中使用的通用函数。
  • 模型:包含 BaseEntity, BaseRepository, BaseObserver, BaseService 类。
  • BaseObserver:包含实体添加、修改和删除的日志记录,并管理webhook的触发。
  • 特质:包含在项目中使用的特质。
  • 标准服务工作者。
  • 标准清单。
  • 推送通知服务。

安装

检查该包的依赖项。

为了该项目的良好运行,必须遵循AGP文件结构,Laravel模块化项目。

在您想要安装包的项目中执行

$ composer require agp/base-utils
$ php artisan config:cache

清单

介绍

manifest.json是一个JSON文件,它向浏览器提供有关用户移动设备或桌面上的网站的信息。拥有清单是Chrome要求显示“添加到主页”提示的条件。

当用户将您的网络应用添加到主页或添加到应用启动器时,manifest.json提供给浏览器以处理您的网站名称、图标等。

manifest.json文件包含有关您网站应用名称的详细信息、它应该使用的图标、它应该在启动时启动的start_url以及许多其他详细信息。

安装

首先您需要检查是否存在,如果不存在则创建

  • 在config.php中需要以下三个参数

    'api_client_token' => env('API_CLIENT_TOKEN', null),
    'id_app' => env('ID_APP', '1'),
    'api_agpadmin' => env('API_AGPADMIN'),
    'device_cookie' => env('LOGIN_DEVICE_COOKIE', 'device'),
  • 在login.php中也需要以下参数

    'device_cookie' => env('LOGIN_DEVICE_COOKIE', 'device'),

在所有变量检查或添加后,您可以从项目中开始安装包

$ php artisan install:service-js

安装完成后,您需要确保您的项目使用它。

为此,只需在您的app.blade.php<head>部分添加链接标签,如下例所示

<head>
    <link rel="manifest" href="{{asset('manifest.json')}}">
    
    ...
</head>

您可以确认并完成,一个标准清单已复制到您的项目public目录。

自定义

    "start_url": "/", // Uma string que representa o URL de início do aplicativo da web.
    "description": "Um projeto AGP", // Uma string na qual os desenvolvedores podem explicar o que o aplicativo faz.
    "background_color": "#FFFFFF", // Define uma cor de fundo de espaço reservado para a página do aplicativo a ser exibida antes que seu stylesheet seja carregado.
    "theme_color": "#FFFFFF", // Uma string que define a cor padrão do tema para o aplicativo.
    "display": "standalone", // Uma string que determina o modo de exibição preferido dos desenvolvedores para o site.

查看更多选项

附加

我们还建议您将以下HTML标签包含在您的app.blade.php

<head>
    <link rel="manifest" href="{{asset('manifest.json')}}">
    <link rel="apple-touch-icon" sizes="192x192" href="{{asset('media/<NomeDoProjeto>/icons/icon-420.png')}}">
    <link rel="apple-touch-startup-image" href="{{asset('media/<NomeDoProjeto>/logos/png/splashscreen.png')}}">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-title" content="{{ config('app.name') }} • <Sub titulo>">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="theme-color" content="#FFFFFF"> <!--Uma string que define a cor padrão do tema para o aplicativo.-->

    <meta name="description" content="<Slogan do app>"/>
    <meta property="og:title" content="{{ config('app.name') }} • <Sub titulo>"/>
    <meta property="og:url" content="{{ config('app.url') }}"/>
    <meta property="og:image" content="{{asset(media/<NomeDoProjeto>/logos/png/logo-share-green.png")}}"/>
    <meta property="og:image:url" content="{{asset('media/<NomeDoProjeto>/logos/png/logo-share-green.png)}}"/>
    <meta property="og:image:secure_url" content="{{asset('media/<NomeDoProjeto>/logos/png/logo-share-blue.png)}}"/>

    ...
</head>

服务工作者

介绍

服务工作者是一种基于事件的特殊工作者。实际上,它是一个可以控制与其关联的网站页面的JavaScript文件,拦截和修改请求以及导航。

服务工作者将所需的资源存储在浏览器缓存中,当用户再次访问应用程序时,服务工作者会检查缓存并在检查网络之前返回结果。

它管理推送通知并帮助创建使用浏览器缓存API的离线Web应用程序。

安装

首先您需要检查是否存在,如果不存在则创建

  • 在config.php中需要以下四个参数

    'api_client_token' => env('API_CLIENT_TOKEN', null),
    'id_app' => env('ID_APP', '1'),
    'api_agpadmin' => env('API_AGPADMIN'),
    'device_cookie' => env('LOGIN_DEVICE_COOKIE', 'device'),

在所有变量检查或添加后,您可以从项目中开始安装包

$ php artisan install:service-js

该命令将mediajs文件从mediajs复制到项目的resources中。

还需要安装样式和js文件。在您的项目中,您需要在项目根目录下的webpack.mix.js中添加代码行。

mix.scripts('resources/js/service-workers.js', 'public/sw.js');

然后只需执行

$ yarn run dev

-- ou --

$ npm run dev

###自定义

在您的项目目录/resources/js中创建了一个名为service-workers.js的文件,其中包含一个名为assets(文件)和routes(路由)的变量,这些变量将被存储在浏览器的缓存中。

### 自定义离线视图

 $ php artisan vendor:publish --tag=base-utils-config       

创建了一个配置文件,只需替换默认视图即可!

推送使用

要使用推送通知,您需要完成上一个步骤(ServiceWorker安装)。

激活

消息激活视图,例如可以添加到_quick-pane.blade.php中。

@include('BaseUtils::push.ativacao')

用户帮助模态框视图;

@include('BaseUtils::push.help')

通知示例

您可以通过创建Laravel通知类来通知有订阅的用户;

$ php artisan make:notification <NomeDaNotificação>

创建通知类后,您需要添加如以下示例中的推送方法。

<?php

namespace App\Notifications;

use Agp\BaseUtils\Notifications\PushChannel;

class ExampleNotify extends Notification
{
    use Queueable;

    private $user;
    private $mensagem;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct($user, $mensagem = 'Exemplo de notificação via Push')
    {
        $this->user = $user;
        $this->mensagem = $mensagem;
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return [PushChannel::class];
    }

    /**
     * Get the push representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toPush($notifiable)
    {
        return [
            'notificacao' => $this->mensagem,
            'dispositivos' => $this->user->dispositivos->whereNotNull('subscricao') // Array de UsuariosDispositivos;
        ];
    }
}

该包会移除未成功返回响应的设备的子订阅。

注意事项

好了,现在就取决于您了。创建出色的通知! 😉

由Richard Pereira Cardoso

项目Git

Laravel模型

讨论论坛

AGP论坛

版权

AGP @ 2020