khidirdotid/laravel-onesignal

Laravel 的 OneSignal 包装器

v1.0.1 2024-03-13 04:27 UTC

This package is auto-updated.

Last update: 2024-09-13 05:29:37 UTC


README

Laravel One Signal 是 Laravel 对 One Signal 的包装器。One Signal 是一个向用户发送推送通知的出色平台。该包在 One Signal 的官方文档中有所提及。您可以在这里查看 这里

Total Downloads Daily Downloads Monthly Downloads License

如果这个包对您非常有用,请给它一个星。它是免费的 😆

🎞️ 这里有一些视频教程

如何安装以及如何实现通知和设备 API。

如何实现 Segment 和 Apps API。

内容

在这里观看其他 Laravel 教程

)

安装

使用以下命令安装包:

composer require ladumor/one-signal:0.4.4

发布配置文件

运行以下命令发布配置文件:

php artisan vendor:publish --provider="Ladumor\OneSignal\OneSignalServiceProvider"

添加提供者

如果使用的是 Laravel 旧版本,请将提供者添加到 config/app.php 文件的 provider 部分:

Ladumor\OneSignal\OneSignalServiceProvider::class,

添加外观

将外观添加到 config/app.php 文件的 aliases 部分:

'OneSignal' => \Ladumor\OneSignal\OneSignal::class,

添加 ENV 数据

将您的 API 密钥和 OneSignal 应用 ID 添加到 .env 文件中:

ONE_SIGNAL_APP_ID=XXXXXX-XXXXXX-XXXXXX-XXXXXX  (YOUR APP ID)
ONE_SIGNAL_AUTHORIZE=XXXXXX                    (REST API KEY)
ONE_SIGNAL_AUTH_KEY=XXXXXXX                    (YOUR USER AUTH KEY)

您可以在代码中使用以下方式调用它们:

使用

发送推送通知

要发送推送通知,请通过调用 sendPush 方法:

$fields['include_player_ids'] = ['xxxxxxxx-xxxx-xxx-xxxx-yyyyyyyyy'];
$message = 'hey!! this is test push.!'   

OneSignal::sendPush($fields, $message);

可选地,您可以这样获取通知的 ID:

$notificationID = OneSignal::sendPush($fields, $message);
echo $notificationID["id"];

取消通知

要取消通知,请通过调用 cancelNotification 方法:

$notificationID = 'xxxxxxxx-xxxx-xxx-xxxx-yyyyyyyyy';

OneSignal::cancelNotification($notificationID);

自定义内容

您可以自定义内容并将其作为字段传递。当您传递内容时,不需要 message 字段。

$fields['include_player_ids'] = ['xxxxxxxx-xxxx-xxx-xxxx-yyyyyyyyy'];
$fields['contents'] = array(
                          "en" => 'English Message',
                          "es" => 'Spanish Message',
                      );
OneSignal::sendPush($fields);

获取所有通知

要检索所有通知,请通过调用 getNotifications 方法:

OneSignal::getNotifications();

您可以在此处查看返回的响应格式 这里

获取单个通知

要检索单个通知,请通过调用 getNotification 方法并传递 ID 参数:

OneSignal::getNotification($notificationId);    

您可以在此处查看返回的响应格式 这里

获取所有设备

要检索所有用户设备,请通过调用 getDevices 方法:

OneSignal::getDevices();

您可以在此处查看返回的响应格式 这里

获取单个设备

要检索单个设备,请通过调用 getDevice 方法并传递 ID 参数:

OneSignal::getDevice($deviceId);    

您可以在此处查看返回的响应格式 这里

创建设备

要向您的应用程序添加设备,请通过调用 addDevice 方法,如果要在不同的应用程序中创建设备,可以在 $fields 数组中指定 app_id

 $fields = [
        'device_type'  => 0,
        'identifier'   => '7abcd558f29d0b1f048083e2834ad8ea4b3d87d8ad9c088b33c132706ff445f0',
        'timezone'     => '-28800',
        'game_version' => '1.1',
        'device_os'    => '7.0.4',
        'test_type'    => 1,
        'device_model' => "iPhone 8,2",
        'tags'         => array("foo" => "bar")
    ];
    
 return OneSignal::addDevice($fields);   

您可以在此处查看支持的参数和指南 这里

更新设备

要更新您的应用程序中的设备,请通过调用 addDevice 方法,如果要在不同的应用程序中更新设备,可以在 $fields 数组中指定 app_id

 $fields = [
        'device_type'  => 0,
        'identifier'   => '7abcd558f29d0b1f048083e2834ad8ea4b3d87d8ad9c088b33c132706ff445f0',
        'timezone'     => '-28800',
        'game_version' => '1.1',
        'device_os'    => '7.0.4',
        'test_type'    => 1,
        'device_model' => "iPhone 8,2",
        'tags'         => array("foo" => "bar")
    ];
    
 $playerId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
    
 return OneSignal::updateDevice($fields, $playerId);   

您可以在这里查看支持的参数和指南。

删除设备

在您的应用程序中删除现有设备

OneSignal::deleteDevice($deviceId);

创建分段

注意:需要ONE-SIGNAL付费计划

要在您的应用程序中添加新的分段,请通过调用createSegment方法:

 $fields = [
         'name' => 'iOS, Android, Web',
         "filters" => array("field" => "device_type", "relation" => "=", "value" => "Android"),
     ];

return OneSignal::createSegment($fields); 

您可以在这里查看支持的参数和指南。

OneSignal::deleteSegment('YOUR_SEGMENT_ID')

删除分段

注意:需要ONE-SIGNAL付费计划

您可以在这里查看更多指南。

应用程序

注意*:认证密钥必须在one-signal.php中设置如何获取认证密钥

查看应用

查看您所有当前OneSignal应用程序的详细信息

 $apps = OneSignal::getApps();

您可以在这里查看API响应。

查看应用

通过传递应用程序ID来查看您当前OneSignal应用程序或其他应用程序的详细信息。

 // It's return default site which is configured in config.
 $app = OneSignal::getApp();
 
 // you can specify app id as wel but it's optional
 $app = OneSignal::getApp('YOUR_APP_ID');

您可以在这里查看API响应。

创建应用

创建新的OneSignal应用程序。

 $fields = array(
        'name' => "TestByMe"
    );

 OneSignal::createApp($fields);

您可以在这里查看支持的参数和指南。

更新应用

更新新的OneSignal应用程序。

 $fields = array(
        'name' => "TestByMe"
    );

 OneSignal::updateApp($fields);
 // you can pass second param as a appId if you want to update other app.. default take from config.

您可以在这里查看支持的参数和指南。

查看结果

更新新的OneSignal应用程序。

 $fields = array(
        'outcome_names'       => "os__click.count",
        'outcome_time_range'  => '1h',
        'outcome_platform'    => 0,
        'outcome_attribution' => 'direct'
    );

 OneSignal::getOutcomes($fields);   // with params
 OneSignal::getOutcomes();  // without any params
 // you can pass params in this method, it's optional.

您可以在这里查看支持的参数和指南。

用户设备

您可以使用一条命令生成用户设备API:

php artisan one-signal.userDevice:publish

此命令生成以下文件:

  • UserDeviceAPIController
  • UserDeviceAPIRepository
  • UserDevice(模型)
  • 迁移

此外,请记住将以下路由添加到api.php文件中。

use App\Http\Controllers\API\UserDeviceAPIController;
  Route::post('user-device/register', [UserDeviceAPIController::class, 'registerDevice']);
  Route::get('user-device/{playerId}/update-status', [UserDeviceAPIController::class, 'updateNotificationStatus']);

变更日志

请在此处查看变更日志

许可协议

MIT许可证(MIT)。请参阅许可证文件以获取更多信息