任命者 / 深空通信链
此软件包已被废弃,不再维护。未建议替代软件包。
一个以复杂方式处理网页推送的软件包。
1.0.8
2017-06-08 11:18 UTC
Requires
- php: >=7.1.0
- ext-openssl: *
- ext-zip: *
- illuminate/contracts: ~5.0
- illuminate/events: ~5.0
- illuminate/http: ~5.0
- illuminate/support: ~5.0
Requires (Dev)
- mockery/mockery: ^0.9.9
- orchestra/testbench: ^3.4
- phpunit/phpunit: ^5.7
README
这个库将帮助集成所有必要的模板以支持网页推送通知。主要目标是整合一个优秀的API,通过Safari实现原生macOS推送功能。
其他方法和灵感
一切始于寻找创建Safari *.pushpackages
的可行方法。经过数小时搜索,我们决定为此问题构建自己的解决方案。我们从一些项目中获得灵感,主要来自jwage的php-apns。感谢他的工作。
安装
导航到您的项目并运行composer命令
composer require appointer/deep-space-comlink
下一步是注册服务提供者
// config/app.php 'providers' => [ ... \Appointer\DeepSpaceComlink\ComlinkServiceProvider::class, ];
最后,您需要注册此软件包的路由
// app/Providers/RouteServiceProvider.php public function boot() { parent::boot(); Appointer\DeepSpaceComlink\DeepSpaceComlink::routes(); }
注意 如果您愿意,您可以发布推送包的配置或模板。这使您能够完全控制图标和应用标题等。使用以下artisan命令
php artisan vendor:publish --provider="Appointer\DeepSpaceComlink\ComlinkServiceProvider" --tag="config" php artisan vendor:publish --provider="Appointer\DeepSpaceComlink\ComlinkServiceProvider" --tag="pushpackage"
实现JavaScript
不用担心,这很简单。我们以axios
为例使用HTTP客户端。如果您有标准的Laravel前端,您可能已经安装了它。您只需要用以下实现替换您当前的本地化数据
// Example is taken from https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html var p = document.getElementById("foo"); p.onclick = function() { // Ensure that the user can receive Safari Push Notifications. if ('safari' in window && 'pushNotification' in window.safari) { var permissionData = window.safari.pushNotification.permission('web.com.example.domain'); checkRemotePermission(permissionData); } }; var checkRemotePermission = function (permissionData) { if (permissionData.permission === 'default') { // This is a new web service URL and its validity is unknown. window.safari.pushNotification.requestPermission( 'https://domain.example.com/dsc', // The web service URL. 'web.com.example.domain', // The Website Push ID. {}, // Data that you choose to send to your server to help you identify the user. checkRemotePermission // The callback function. ); } else if (permissionData.permission === 'denied') { // The user said no. } else if (permissionData.permission === 'granted') { // The web service URL is a valid push provider, and the user said yes. // permissionData.deviceToken is now available to use. } };
测试
可以使用以下命令执行测试
./vendor/bin/phpunit
贡献
任何帮助都非常受欢迎。您有问题,或者有扩展此项目的绝佳想法吗?请随意发起一个pull request或提交一个问题。
如果您提交一个错误报告,您的问题应包含标题和关于问题的清晰描述。您还应包括尽可能多的相关信息和一个演示问题的代码示例。错误报告的目标是使您和其他人能够轻松复制错误并开发修复方案。
请使用问题跟踪器来报告问题。
许可
此库是开源软件,根据MIT许可协议授权。