# PushNotifications
**Repository Path**: zanderzhang/PushNotifications
## Basic Information
- **Project Name**: PushNotifications
- **Description**: A macOS, Linux, Windows app to test push notifications on iOS and Android
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-02-01
- **Last Updated**: 2024-06-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ℙ𝕦𝕤𝕙 ℕ𝕠𝕥𝕚𝕗𝕚𝕔𝕒𝕥𝕚𝕠𝕟𝕤
❤️ Support my work https://gum.co/rsjU ❤️
## Description
- `PushNotitication` is an app used for testing push notifications on iOS and Android
- Support macOS, Windows, Linux
- Support using `certificate` and `token` for authentication with APNS
- Auto save settings
## How to install
* Download latest release from https://github.com/onmyway133/PushNotifications/releases
- If using macOS Catalina (10.15+), here is the instruction of [how to open the app](#opening-app-on-macos-catalina-1015)
## How to use
* iOS (APNs):
- [iOS Provider Certificate](#ios-provider-certificates)
- [iOS Authentication Token](#ios-authentication-token)
* Android (FCM):
- [Android Server Key](#android-server-key)
Keep in mind: To connect to APNs you can use either `Provider certificate` or `Authentication Token`. They are **different ways** and `Authentication Token` is a new one.
**Main difference:** `Provider certificate` expires every year and needs to be regenerated (and reuploaded to your server as `.p12`). `Authentication Token` is unlimited and you don't have to recreate and reupload it.
### iOS Provider Certificate
- Read more [Provider Certificates](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html#//apple_ref/doc/uid/TP40008194-CH11-SW1)
- Go to [Member Center](https://developer.apple.com/account/ios/certificate/distribution/create)
- Generate `Apple Push Notification service SSL (Sandbox & Production)`, this is now used for both sandbox and production. Download as `.cer` file
- Double click on `.cer` file to install into `Keychain`, then export it as `.p12` file
- In `PushNotifications`, select `.p12` file, fill out `passphase` if needed, fill out `bundle id`, `device token`, `message`, select `environment`
- `message` must be in json format, see [Creating the Remote Notification Payload](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html)
### iOS Authentication Token
- Read more [Authentication Tokens](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html#//apple_ref/doc/uid/TP40008194-CH11-SW1)
- Go to [Member Center](https://developer.apple.com/account/ios/certificate/distribution/create)
- Create a `Key` for push notification. Download as `.p8` file.
- Note your `key id`
- Note your `team id` on [Account Membership](https://developer.apple.com/account/#/membership)
- In `PushNotifications`, select `.p8` file, fill out `key id`, `team id`, `bundle id`, `device token`, `message`, select `environment`
### Android Server Key
- Read about [
Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging/)
- Add or select project on [Firebase Console](https://console.firebase.google.com/u/0/)
- In `PushNotifications`, fill out `server key`, `device token`, `message`
- `message` must be in json format
## Opening app on macOS Catalina (10.15+)
If you installed the app on macOS Catalina using the `.dmg` file, you will probably see this window when trying to launch the app:
Just press `OK` and go to `System Preferences..` -> `Security & Privacy` -> `General` tab. There you need to press the button `Open Anyway`.
## Manual building
In case of issues with running the app on your version of OS, it's possible to easily build it yourself.
Steps:
1) Download or clone the repository
2) Install `node` on your computer (https://nodejs.org/en/)
3) Run `npm install` in the root of downloaded/cloned project
4) Verify that the app can be launched with the command `npm start` (optional)
5) Build the project to generate installable files:
- For building with `electron-builder` you need to run `npm run dist`. Generated files end up in the folder `dist` in the root of your project.
As a result `electron-builder` will generate:
- For macOS: `.zip`, `.dmg` (if you build using macOS)
- For Windows: `.msi` (if you build using Windows)
- For Linux: `.deb`, `.AppImage` (if you build using Linux)
Keep in mind: you cannot build for Windows or Linux, if you are using macOS, or vise versa. It creates installable files only for your current OS.
## Credit
- Icon http://emojione.com/
- Use [node-apn](https://github.com/node-apn/node-apn) under the hood
## Author
Khoa Pham, onmyway133@gmail.com
## License
**PushNotifications** is available under the MIT license. See the [LICENSE](https://github.com/onmyway133/PushNotifications/blob/master/LICENSE.md) file for more info.