pronto/mobilebundle 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

pronto/mobilebundle

Composer 安装命令:

composer require pronto/mobilebundle

包简介

A CMS bundle for mobile solutions

README 文档

README

Table of contents

  1. Installation
  2. Upgrades
  3. Configuration
  4. API Docs

Installation

Step 1. Install the skeleton

Open a command console and execute the following command to create a new project inside the folder: :

$ composer create-project pronto/mobile-skeleton <package-name>

This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.

Step 2: Setup the database

Update your database connection inside the .env file to match your configuration:

DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name

Then, create the database schema:

$ php bin/console doctrine:schema:create

And run the fixtures to provide initial data:

$ php bin/console doctrine:fixtures:load

This creates a first customer of the CMS, along with a super administrator.

Step 5: Test logging in

When you ran php bin/console doctrine:fixtures:load, a customer with application and user account where created.

You can test your application by installing the web-server-bundle, which allows you to start a server and view your application at http://localhost:8000. You can do this by installing the web-server-bundle:

$ composer require symfony/web-server-bundle --dev

And then running this command to start the server:

$ php bin/console server:run

You can now check if you're able to login at http://localhost:8000/login with the following credentials: admin@example.com and password admin.

Step 6: Setup Firebase integrations

We use Firebase to send our push notifications and store information in the Firebase database. This information contains sign-ins of devices and app users. At a regular interval, these records are being fetched from the Firebase database and updated into the database of the CMS. This method is used to prevent a lot of requests to your server.

The CMS also stores notification templates in the cloud storage of Firebase. When a user receives a notification, there might be an html template which is being opened. That template is also retrieved from Firebase.

At last, APNS tokens need to be converted to Firebase tokens for iOS devices to be able to receive the notifications.

6.1 Create a Firebase project

You can do this by going to the Firebase Console and logging in with your Google account. You can now create a new project. After you have done this, you will be redirected to the project overview.

6.2 Create a new private key

Click on the settings icon and choose "Project settings". Next, click on the tab "Service accounts". You now have the ability to create a new private key. When you click this button, a service-account file will be downloaded.

Firebase project settings

For the MobileBundle to connect to your Firebase project, you need to rename this file to: google-service-account.json and place it in the root of your project.

Upgrades

Most of the upgrades of the bundle do not require any changes for your main project. When changes are needed, they are listed here.

v1.6.* to v1.7.0

The service configuration is slightly changed in this version. When using Twig in your package, you'll need to update your packages/twig.yaml file:

twig:
    globals:
-       pronto_mobile: '@pronto_mobile.global.app'
+       pronto_mobile: '@Pronto\MobileBundle\Service\ProntoMobile'
        entry_value_parser: '@Pronto\MobileBundle\Service\Collection\EntryValueParser'
        json_translator: '@Pronto\MobileBundle\Service\JsonTranslator'

MobileBundle configuration

The MobileBundle configuration is available in the config/packages/pronto_mobile.yaml file. At the moment, there are not a lot of options here.

pronto_mobile:
    domain: 'pronto.am'
    uploads_folder: 'uploads'

    firebase:
        storage_decryption_password: 'ThisValueIsNotSoSecret'
Domain name

The domain is important for sending the emails. The domain name you provide here is the domain mails are being send from. So, with the default value, mails are sent from: noreply@pronto.am.

Upoads folder

This option is quite obvious. You can specify in which folder the uploads are being stored. This also means that for now, the only storage option is local.

Firebase: Storage decryption password

This is the password that's being used to decrypt values from the logging table inside the Firebase Realtime Database. For obvious reasons, this value needs to be the same as the one you provide in the Android and iOS sdk of the MobileBundle.

Cronjobs

There are three cronjobs which need to run in the background to send push notifications, retrieve logging from Firebase and convert APNS tokens to Firebase tokens. Below are the commands you need to register on your server for these tasks to be executed in the background. You are free to change the interval at which they are executed.

crontab -e
*    * * * * php /path/to/project/bin firebase:notifications:send   // every minute
*/15 * * * * php /path/to/project/bin firebase:database:logs        // every 15 minutes
*/15 * * * * php /path/to/project/bin firebase:tokens:convert       // every 15 minutes

API Docs

Postman

A public Postman collection is available, with the currently available API routes.

APIDoc JS

The MobileBundle uses apidocjs to generate API docs. The docs are located inside the public/apidoc folder.

OAuth2

The API docs don't list the routes for OAuth. The Android and Mobile sdk of the MobileBundle both use OAuth to connect to the API. If you're not familiar with OAuth, I suggest you visit https://www.oauth.com to get yourself up to date.

The routes for requesting an access token is: https://yourdomain.app/oauth/v2/token. You can request an access token by using the client credentials, or using the username and password combination of an app user.

Request access token: Client Credentials

Documentation:https://www.oauth.com/oauth2-servers/access-tokens/client-credentials/

[POST] https://yourdomain.app/oauth/v2/token

{
	"grant_type": "client_credentials",
	"client_id": "1_66e8vp2mt2sccosk4w0ogswogsgww4wsokcw4wsc80w4s00woc",
	"client_secret": "5s6e0r58qn8k0wggk808ogss4g08kgs0w8wgo84cc4s84sw4ck"
}
Request access token: Username and password

Documentation:https://www.oauth.com/oauth2-servers/access-tokens/password-grant/

[POST] https://yourdomain.app/oauth/v2/token

{
	"grant_type": "password",
	"username": "user@example.com",
	"password": "1234luggage",
	"client_id": "1_66e8vp2mt2sccosk4w0ogswogsgww4wsokcw4wsc80w4s00woc",
	"client_secret": "5s6e0r58qn8k0wggk808ogss4g08kgs0w8wgo84cc4s84sw4ck"
}

pronto/mobilebundle 适用场景与选型建议

pronto/mobilebundle 是一款 基于 JavaScript 开发的 Composer 扩展包,目前已累计 674 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 08 月 15 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「cms mobile pronto apps app bundle」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 pronto/mobilebundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 pronto/mobilebundle 我们能提供哪些服务?
定制开发 / 二次开发

基于 pronto/mobilebundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 674
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 1
  • 开发语言: JavaScript

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-08-15