Docs
This commit is contained in:
parent
96bb357435
commit
12b83828bd
4 changed files with 45 additions and 1 deletions
|
@ -151,6 +151,8 @@ func execServe(c *cli.Context) error {
|
||||||
return errors.New("if set, web-root must be 'home' or 'app'")
|
return errors.New("if set, web-root must be 'home' or 'app'")
|
||||||
} else if upstreamBaseURL != "" && !strings.HasPrefix(upstreamBaseURL, "http://") && !strings.HasPrefix(upstreamBaseURL, "https://") {
|
} else if upstreamBaseURL != "" && !strings.HasPrefix(upstreamBaseURL, "http://") && !strings.HasPrefix(upstreamBaseURL, "https://") {
|
||||||
return errors.New("if set, upstream-base-url must start with http:// or https://")
|
return errors.New("if set, upstream-base-url must start with http:// or https://")
|
||||||
|
} else if upstreamBaseURL != "" && baseURL == "" {
|
||||||
|
return errors.New("if upstream-base-url is set, base-url must also be set")
|
||||||
}
|
}
|
||||||
|
|
||||||
webRootIsApp := webRoot == "app"
|
webRootIsApp := webRoot == "app"
|
||||||
|
|
|
@ -618,6 +618,35 @@ Example:
|
||||||
firebase-key-file: "/etc/ntfy/ntfy-sh-firebase-adminsdk-ahnce-9f4d6f14b5.json"
|
firebase-key-file: "/etc/ntfy/ntfy-sh-firebase-adminsdk-ahnce-9f4d6f14b5.json"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## iOS instant notifications
|
||||||
|
Unlike Android, iOS heavily restricts background processing, which sadly makes it impossible to implement instant
|
||||||
|
push notifications without a central server.
|
||||||
|
|
||||||
|
To still support instant notifications on iOS through your self-hosted ntfy server, you have to forward so called `poll_request`
|
||||||
|
messages to the main ntfy.sh server (or any upstream server that's APNS/Firebase connected, if you build your own iOS app),
|
||||||
|
which will then forward it to Firebase/APNS.
|
||||||
|
|
||||||
|
To configure it, simply set `upstream-base-url` like so:
|
||||||
|
|
||||||
|
``` yaml
|
||||||
|
upstream-base-url: "https://ntfy.sh"
|
||||||
|
```
|
||||||
|
|
||||||
|
If set, all incoming messages will publish a poll request to the configured upstream server, containing
|
||||||
|
the message ID of the original message, instructing the iOS app to poll this server for the actual message contents.
|
||||||
|
|
||||||
|
If `upstream-base-url` is not set, notifications will still eventually get to your device, but delivery can take hours,
|
||||||
|
depending on the state of th phone. If you are using your phone, it shouldn't take more than 20-30 minutes though.
|
||||||
|
|
||||||
|
In case you're curious, here's an example of the entire flow:
|
||||||
|
|
||||||
|
- In the iOS app, you subscribe to `https://ntfy.example.com/mytopic`
|
||||||
|
- The app subscribes to the Firebase topic `6de73be8dfb7d69e...` (the SHA256 of the topic URL)
|
||||||
|
- When you publish a message to `https://ntfy.example.com/mytopic`, your ntfy server will publish a
|
||||||
|
poll request to `https://ntfy.sh/6de73be8dfb7d69e...` (passing the message ID in the `X-Poll-ID` header)
|
||||||
|
- The ntfy.sh server publishes the message to Firebase, which forwards it to APNS, which forwards it to your iOS device
|
||||||
|
- Your iOS device receives the poll request, and fetches the actual message from your server, and then displays it
|
||||||
|
|
||||||
## Rate limiting
|
## Rate limiting
|
||||||
!!! info
|
!!! info
|
||||||
Be aware that if you are running ntfy behind a proxy, you must set the `behind-proxy` flag.
|
Be aware that if you are running ntfy behind a proxy, you must set the `behind-proxy` flag.
|
||||||
|
|
|
@ -26,7 +26,8 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release
|
||||||
**Features:**
|
**Features:**
|
||||||
|
|
||||||
* Regularly send Firebase keepalive messages to ~poll topic to support self-hosted servers (no ticket)
|
* Regularly send Firebase keepalive messages to ~poll topic to support self-hosted servers (no ticket)
|
||||||
* Add subscribe filter to query exact messages by ID (no ticket)
|
* Add subscribe filter to query exact messages by ID (no ticket)
|
||||||
|
* Support for `poll_request` messages to support [iOS push notifications](https://ntfy.sh/docs/config/#ios-instant-notifications) for self-hosted servers (no ticket)
|
||||||
|
|
||||||
**Bugs:**
|
**Bugs:**
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,8 @@ If those screenshots are still not enough, here's a video:
|
||||||
</figure>
|
</figure>
|
||||||
|
|
||||||
## Message priority
|
## Message priority
|
||||||
|
_Supported on:_ :material-android: :material-apple:
|
||||||
|
|
||||||
When you [publish messages](../publish.md#message-priority) to a topic, you can **define a priority**. This priority defines
|
When you [publish messages](../publish.md#message-priority) to a topic, you can **define a priority**. This priority defines
|
||||||
how urgently Android will notify you about the notification, and whether they make a sound and/or vibrate.
|
how urgently Android will notify you about the notification, and whether they make a sound and/or vibrate.
|
||||||
|
|
||||||
|
@ -61,6 +63,8 @@ setting, and other settings such as popover or notification dot:
|
||||||
</figure>
|
</figure>
|
||||||
|
|
||||||
## Instant delivery
|
## Instant delivery
|
||||||
|
_Supported on:_ :material-android:
|
||||||
|
|
||||||
Instant delivery allows you to receive messages on your phone instantly, **even when your phone is in doze mode**, i.e.
|
Instant delivery allows you to receive messages on your phone instantly, **even when your phone is in doze mode**, i.e.
|
||||||
when the screen turns off, and you leave it on the desk for a while. This is achieved with a foreground service, which
|
when the screen turns off, and you leave it on the desk for a while. This is achieved with a foreground service, which
|
||||||
you'll see as a permanent notification that looks like this:
|
you'll see as a permanent notification that looks like this:
|
||||||
|
@ -91,6 +95,8 @@ The ntfy Android app uses Firebase only for the main host `ntfy.sh`, and only in
|
||||||
It won't use Firebase for any self-hosted servers, and not at all in the the F-Droid flavor.
|
It won't use Firebase for any self-hosted servers, and not at all in the the F-Droid flavor.
|
||||||
|
|
||||||
## Share to topic
|
## Share to topic
|
||||||
|
_Supported on:_ :material-android:
|
||||||
|
|
||||||
You can share files to a topic using Android's "Share" feature. This works in almost any app that supports sharing files
|
You can share files to a topic using Android's "Share" feature. This works in almost any app that supports sharing files
|
||||||
or text, and it's useful for sending yourself links, files or other things. The feature remembers a few of the last topics
|
or text, and it's useful for sending yourself links, files or other things. The feature remembers a few of the last topics
|
||||||
you shared content to and lists them at the bottom.
|
you shared content to and lists them at the bottom.
|
||||||
|
@ -103,6 +109,8 @@ The feature is pretty self-explanatory, and one picture says more than a thousan
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## ntfy:// links
|
## ntfy:// links
|
||||||
|
_Supported on:_ :material-android:
|
||||||
|
|
||||||
The ntfy Android app supports deep linking directly to topics. This is useful when integrating with [automation apps](#automation-apps)
|
The ntfy Android app supports deep linking directly to topics. This is useful when integrating with [automation apps](#automation-apps)
|
||||||
such as [MacroDroid](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid) or [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm),
|
such as [MacroDroid](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid) or [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm),
|
||||||
or to simply directly link to a topic from a mobile website.
|
or to simply directly link to a topic from a mobile website.
|
||||||
|
@ -121,6 +129,8 @@ or to simply directly link to a topic from a mobile website.
|
||||||
## Integrations
|
## Integrations
|
||||||
|
|
||||||
### UnifiedPush
|
### UnifiedPush
|
||||||
|
_Supported on:_ :material-android:
|
||||||
|
|
||||||
[UnifiedPush](https://unifiedpush.org) is a standard for receiving push notifications without using the Google-owned
|
[UnifiedPush](https://unifiedpush.org) is a standard for receiving push notifications without using the Google-owned
|
||||||
[Firebase Cloud Messaging (FCM)](https://firebase.google.com/docs/cloud-messaging) service. It puts push notifications
|
[Firebase Cloud Messaging (FCM)](https://firebase.google.com/docs/cloud-messaging) service. It puts push notifications
|
||||||
in the control of the user. ntfy can act as a **UnifiedPush distributor**, forwarding messages to apps that support it.
|
in the control of the user. ntfy can act as a **UnifiedPush distributor**, forwarding messages to apps that support it.
|
||||||
|
@ -136,6 +146,8 @@ to handle messages. Here's an example with [FluffyChat](https://fluffychat.im/):
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
### Automation apps
|
### Automation apps
|
||||||
|
_Supported on:_ :material-android:
|
||||||
|
|
||||||
The ntfy Android app integrates nicely with automation apps such as [MacroDroid](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid)
|
The ntfy Android app integrates nicely with automation apps such as [MacroDroid](https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid)
|
||||||
or [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm). Using Android intents, you can
|
or [Tasker](https://play.google.com/store/apps/details?id=net.dinglisch.android.taskerm). Using Android intents, you can
|
||||||
**react to incoming messages**, as well as **send messages**.
|
**react to incoming messages**, as well as **send messages**.
|
||||||
|
|
Loading…
Reference in a new issue