{"id":25532629,"url":"https://github.com/delphiworlds/pushit","last_synced_at":"2026-01-21T19:30:17.985Z","repository":{"id":111294520,"uuid":"223846277","full_name":"DelphiWorlds/PushIt","owner":"DelphiWorlds","description":"Tool for testing Firebase Cloud Messaging, written in Delphi","archived":false,"fork":false,"pushed_at":"2024-06-14T21:23:10.000Z","size":53432,"stargazers_count":24,"open_issues_count":0,"forks_count":9,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-06-14T22:37:03.403Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Pascal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DelphiWorlds.png","metadata":{"files":{"readme":"ReadMe.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-25T02:29:43.000Z","updated_at":"2024-06-14T21:23:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"be9cee2a-3efb-4971-9374-33c072d7aa11","html_url":"https://github.com/DelphiWorlds/PushIt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DelphiWorlds%2FPushIt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DelphiWorlds%2FPushIt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DelphiWorlds%2FPushIt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DelphiWorlds%2FPushIt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DelphiWorlds","download_url":"https://codeload.github.com/DelphiWorlds/PushIt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239763590,"owners_count":19692800,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-20T01:49:48.062Z","updated_at":"2026-01-21T19:30:17.900Z","avatar_url":"https://github.com/DelphiWorlds.png","language":"Pascal","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PushIt\r\n\r\nPushIt is a tool designed to make it easier for testing Firebase Cloud Messaging (FCM) to mobile devices\r\n\r\n**NOTE: As of Dec 8th, 2021, the legacy HTTP API functionality has been removed from PushIt. If you require the original source code that includes it, I could make it available as part of this repo, however all future changes will not include the legacy API.**\r\n\r\n## Application\r\n\r\n### Main View\r\n\r\nThe main window allows you to enter your Service Account JSON File (HTTP v1 API), the device token to send to, and the fields that you want to include in the message:\r\n\r\n![Main View](./Screenshots/MainView.png)\r\n\r\n#### Service Account JSON File\r\n\r\nTo obtain the file:\r\n\r\n* Go into [Cloud Console](https://console.cloud.google.com/iam-admin/serviceaccounts)\r\n* Select the project you have associated with Firebase Cloud Messaging\r\n* If you do not have any service accounts listed with a name of `firebase-adminsdk` you will need to create one\r\n* Once the account has been selected or created, go to the `Keys` tab\r\n* Click Add Key and select Create a new key, then click Create\r\n* The browser will prompt you to save the JSON file somewhere. **It does this only once, so make sure you keep the file**\r\n\r\nYou may now use this file in PushIt\r\n\r\n#### \"Data Only\" messages\r\n\r\nv3.0.1 introduced \"Data Only\" messages, which are handled by improved FCM support, currently being tested in FCM Rebooted in the Playground repo.\r\n\r\nCheck the \"Data Only\" checkbox to send messages with this kind of payload.\r\n\r\n#### Modifying the JSON\r\n\r\nPushIt also allows you to modify (or create) the JSON that is sent:\r\n\r\n![JSON View](./Screenshots/JsonView.png)\r\n\r\nWhen you fill out the message fields on the message tab, then switch to the JSON tab, PushIt creates the JSON for you, which you can then tweak as desired\r\n\r\n### Devices View\r\n\r\nIn Kastri, there's a DataModule called TPushUDP (in the unit [DW.PushUDP](https://github.com/DelphiWorlds/Kastri/blob/master/Features/Notifications)). In your mobile application, if you create an instance of TPushUDP and call UpdateDeviceInfo with the DeviceID and Token when they become available, if the device is on the same local network, the information will be sent to PushIt, which will populate the Devices View with the devices that are running the mobile app:\r\n\r\n![Devices View](./Screenshots/DevicesView.png)\r\n\r\nSelect a device and click the Use button to populate the Token field in the main view.\r\n\r\n## Precompiled Versions\r\n\r\nThere are precompiled Win32/Win64 binaries of PushIt in the `Bin` folder of this repo. \r\n\r\n**Please note that if you will need to put the OpenSSL DLLs for the respective platform from the `Lib` folder either into the same folder as PushIt, or the Windows library path**\r\n\r\ni.e. for Win32:\r\n```\r\nlibcrypto-1_1.dll\r\nlibssl-1_1.dll\r\n```\r\n\r\nor for Win64:\r\n```\r\nlibcrypto-1_1-x64.dll\r\nlibssl-1_1-x64.dll\r\n```\r\n\r\nThese files were obtained from the [Grijjy Delphi OpenSsl repo](https://github.com/grijjy/DelphiOpenSsl/tree/master/Bin)\r\n\r\n## Compiling PushIt\r\n\r\nPushIt was written in Embarcadero's Delphi, using version 11.0, however it may compile for earlier versions.\r\n\r\nPushIt depends on units from the [Kastri](https://github.com/DelphiWorlds/Kastri) project, so you will need to include a path to these units in order for PushIt to compile.\r\n\r\nPushIt is an FMX application so it is cross-platform, however the recommended platforms are macOS and Windows.\r\n\r\nOn macOS, PushIt uses the files:\r\n```\r\nlibssl-osx64.a\r\nlibcrypto-osx64.a\r\n```\r\nin the `Lib` folder for OpenSSL support. These files were obtained from the [Grijjy Delphi OpenSsl repo](https://github.com/grijjy/DelphiOpenSsl)\r\n\r\nFor Windows, please see the Precompiled Versions section regarding OpenSSL\r\n\r\nIn order to have PushIt use styles, please copy your desired .style files into the Styles folder as:\r\n\r\n```\r\nApplication.Default.style (for Windows)\r\nApplication.macOS.style (for macOS)\r\n```\r\n\r\nWhen PushIt is built, the style for the respective platform will be compiled into the into the application, and loaded at runtime. If you do not wish to use styles, you will need to remove the following line from the project source:\r\n\r\n```{$I Styles.inc}```\r\n\r\nThe screenshots (above) for PushIt use the Calypso style from [Delphi Styles](https://delphistyles.com/)\r\n\r\n## Version History\r\n\r\nv3.1.0 (Jul 25th, 2023)\r\n\r\n* Added support for custom data\r\n\r\nv3.0.1 (Jul 20th, 2022)\r\n\r\n* Added support for \"Data Only\" messages\r\n\r\nv3.0.0 (Dec 8th, 2021)\r\n\r\n* Removed support for legacy HTTP API\r\n* Refactored to use the [DW.FCMSender unit from Kastri](https://github.com/DelphiWorlds/Kastri/blob/master/Features/Firebase/DW.FCMSender.pas)\r\n* Minor fixes\r\n\r\nv2.0.0 (April 23rd, 2021)\r\n\r\n* Added support for HTTP v1 API\r\n* Last used token is now saved\r\n* Added support for big text and big images on Android\r\n* Minor fixes\r\n\r\nv1.1.0 (January 4th, 2020)\r\n\r\n* Added support for data element, and for including both notification and data elements in the payload\r\n* Added support for retrieving the channel id from the UDP packet\r\n  \r\nv1.0.0 (November 25th, 2019)\r\n\r\n* Initial release\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdelphiworlds%2Fpushit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdelphiworlds%2Fpushit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdelphiworlds%2Fpushit/lists"}