Copyright | (C) 2017 memrange UG |
---|---|
License | BSD3 |
Maintainer | Hans-Christian Esperer <hc@memrange.io> |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Send push notifications using Apple's HTTP2 APN API
- newSession :: FilePath -> FilePath -> FilePath -> Bool -> Int -> ByteString -> IO ApnSession
- newMessage :: JsonApsMessage -> JsonAps
- newMessageWithCustomPayload :: JsonApsMessage -> Text -> JsonAps
- hexEncodedToken :: Text -> ApnToken
- rawToken :: ByteString -> ApnToken
- sendMessage :: ApnSession -> ApnToken -> JsonAps -> IO ApnMessageResult
- sendSilentMessage :: ApnSession -> ApnToken -> IO ApnMessageResult
- sendRawMessage :: ApnSession -> ApnToken -> ByteString -> IO ApnMessageResult
- alertMessage :: Text -> Text -> JsonApsMessage
- emptyMessage :: JsonApsMessage
- setAlertMessage :: Text -> Text -> JsonApsMessage -> JsonApsMessage
- setBadge :: Int -> JsonApsMessage -> JsonApsMessage
- setCategory :: Text -> JsonApsMessage -> JsonApsMessage
- setSound :: Text -> JsonApsMessage -> JsonApsMessage
- clearAlertMessage :: JsonApsMessage -> JsonApsMessage
- clearBadge :: JsonApsMessage -> JsonApsMessage
- clearCategory :: JsonApsMessage -> JsonApsMessage
- clearSound :: JsonApsMessage -> JsonApsMessage
- closeSession :: ApnSession -> IO ()
- isOpen :: ApnSession -> IO Bool
- data ApnSession
- data JsonAps
- data JsonApsAlert
- data JsonApsMessage
- data ApnMessageResult
- data ApnToken
Documentation
:: FilePath | Path to the client certificate key |
-> FilePath | Path to the client certificate |
-> FilePath | Path to the CA |
-> Bool | True if the apn development servers should be used, False to use the production servers |
-> Int | How many messages will be sent in parallel? This corresponds to the number of http2 streams open in parallel; 100 seems to be a default value. |
-> ByteString | Topic (bundle name of the app) |
-> IO ApnSession | The newly created session |
Start a new session for sending APN messages. A session consists of a connection pool of connections to the APN servers, while each connection has a pool of workers that create HTTP2 streams to send individual push notifications.
:: JsonApsMessage | The standard message to include |
-> JsonAps | The resulting APN message |
Prepare a new apn message consisting of a standard message without a custom payload
newMessageWithCustomPayload Source #
:: JsonApsMessage | The message |
-> Text | The custom payload |
-> JsonAps | The resulting APN message |
Prepare a new apn message consisting of a standard message and a custom payload
:: Text | The base16 (hex) encoded unique identifier for a device (APN token) |
-> ApnToken | The resulting token |
Create a token from a hex encoded text
:: ByteString | The bytestring that uniquely identifies a device (APN token) |
-> ApnToken | The resulting token |
Create a token from a raw bytestring
:: ApnSession | Session to use |
-> ApnToken | Device to send the message to |
-> JsonAps | The message to send |
-> IO ApnMessageResult | The response from the APN server |
Send a push notification message.
:: ApnSession | Session to use |
-> ApnToken | Device to send the message to |
-> IO ApnMessageResult | The response from the APN server |
Send a silent push notification
:: ApnSession | Session to use |
-> ApnToken | Device to send the message to |
-> ByteString | The message to send |
-> IO ApnMessageResult | The response from the APN server |
Send a raw payload as a push notification message (advanced)
:: Text | The title of the message |
-> Text | The body of the message |
-> JsonApsMessage | The modified message |
Create a new APN message with an alert part
emptyMessage :: JsonApsMessage Source #
Create an empty apn message
:: Text | The title of the message |
-> Text | The body of the message |
-> JsonApsMessage | The message to alter |
-> JsonApsMessage | The modified message |
Set the alert part of an APN message
:: Int | The badge number to set. The badge number is displayed next to your app's icon. Set to 0 to remove the badge number. |
-> JsonApsMessage | The message to modify |
-> JsonApsMessage | The modified message |
Set the badge part of an APN message
:: Text | The category to set |
-> JsonApsMessage | The message to modify |
-> JsonApsMessage | The modified message |
Set the category part of an APN message
:: Text | The sound to use (either "default" or something in the application's bundle) |
-> JsonApsMessage | The message to modify |
-> JsonApsMessage | The modified message |
Set a sound for an APN message
:: JsonApsMessage | The message to modify |
-> JsonApsMessage | The modified message |
Remove the alert part of an APN message
:: JsonApsMessage | The message to modify |
-> JsonApsMessage | The modified message |
Clear the badge part of an APN message
:: JsonApsMessage | The message to modify |
-> JsonApsMessage | The modified message |
Clear the category part of an APN message
:: JsonApsMessage | The message to modify |
-> JsonApsMessage | The modified message |
Clear the sound for an APN message
closeSession :: ApnSession -> IO () Source #
Manually close a session. The session must not be used anymore after it has been closed. Calling this function will close the worker thread, and all open connections to the APN service that belong to the given session. Note that sessions will be closed automatically when they are garbage collected, so it is not necessary to call this function.
isOpen :: ApnSession -> IO Bool Source #
Check whether a session is open or has been closed by a call to closeSession
data ApnSession Source #
A session that manages connections to Apple's push notification service
A push notification message
data JsonApsAlert Source #
The specification of a push notification's message body
data JsonApsMessage Source #
Push notification message's content
data ApnMessageResult Source #
The result of a send request