-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Push notifications for Android and iOS -- -- Push notifications for Android and iOS -- -- Functions for sending push notifications to popular mobile platforms. @package push-notifications @version 0.2 -- | Data type and JSON instances for Firebase Cloud Messaging payloads For -- more information, please see Google's documentation. module Network.PushNotification.Android.Payload data FcmPayload FcmPayload :: Maybe Text -> Maybe [Text] -> Maybe Text -> Maybe Text -> Maybe Bool -> Maybe Int -> Maybe Text -> Maybe Bool -> Maybe FcmNotification -> Maybe FcmData -> FcmPayload [_fcmPayload_to] :: FcmPayload -> Maybe Text [_fcmPayload_registrationIds] :: FcmPayload -> Maybe [Text] [_fcmPayload_collapseKey] :: FcmPayload -> Maybe Text [_fcmPayload_priority] :: FcmPayload -> Maybe Text [_fcmPayload_contentAvailable] :: FcmPayload -> Maybe Bool [_fcmPayload_timeToLive] :: FcmPayload -> Maybe Int [_fcmPayload_restrictedPackageName] :: FcmPayload -> Maybe Text [_fcmPayload_dryRun] :: FcmPayload -> Maybe Bool [_fcmPayload_notification] :: FcmPayload -> Maybe FcmNotification [_fcmPayload_data] :: FcmPayload -> Maybe FcmData data FcmData FcmData :: Text -> FcmData [_fcmData_custom] :: FcmData -> Text data FcmNotification FcmNotification :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> FcmNotification [_fcmNotification_title] :: FcmNotification -> Maybe Text [_fcmNotification_body] :: FcmNotification -> Maybe Text [_fcmNotification_androidChannelId] :: FcmNotification -> Maybe Text [_fcmNotification_icon] :: FcmNotification -> Maybe Text [_fcmNotification_sound] :: FcmNotification -> Maybe Text [_fcmNotification_tag] :: FcmNotification -> Maybe Text [_fcmNotification_color] :: FcmNotification -> Maybe Text [_fcmNotification_clickAction] :: FcmNotification -> Maybe Text instance Data.Aeson.Types.ToJSON.ToJSON Network.PushNotification.Android.Payload.FcmPayload instance Data.Aeson.Types.FromJSON.FromJSON Network.PushNotification.Android.Payload.FcmPayload instance Data.Aeson.Types.ToJSON.ToJSON Network.PushNotification.Android.Payload.FcmNotification instance Data.Aeson.Types.FromJSON.FromJSON Network.PushNotification.Android.Payload.FcmNotification instance Data.Aeson.Types.ToJSON.ToJSON Network.PushNotification.Android.Payload.FcmData instance Data.Aeson.Types.FromJSON.FromJSON Network.PushNotification.Android.Payload.FcmData instance GHC.Classes.Ord Network.PushNotification.Android.Payload.FcmPayload instance GHC.Classes.Eq Network.PushNotification.Android.Payload.FcmPayload instance GHC.Read.Read Network.PushNotification.Android.Payload.FcmPayload instance GHC.Show.Show Network.PushNotification.Android.Payload.FcmPayload instance GHC.Classes.Ord Network.PushNotification.Android.Payload.FcmNotification instance GHC.Classes.Eq Network.PushNotification.Android.Payload.FcmNotification instance GHC.Read.Read Network.PushNotification.Android.Payload.FcmNotification instance GHC.Show.Show Network.PushNotification.Android.Payload.FcmNotification instance GHC.Classes.Ord Network.PushNotification.Android.Payload.FcmData instance GHC.Classes.Eq Network.PushNotification.Android.Payload.FcmData instance GHC.Read.Read Network.PushNotification.Android.Payload.FcmData instance GHC.Show.Show Network.PushNotification.Android.Payload.FcmData instance Data.Default.Class.Default Network.PushNotification.Android.Payload.FcmPayload instance Data.Default.Class.Default Network.PushNotification.Android.Payload.FcmNotification module Network.PushNotification.Android -- | Sends a POST request to the firebase service containing the push -- notification data sendAndroidPushMessage :: Manager -> ByteString -> FcmPayload -> IO (Response ByteString) -- | Apple Push Notification Service provider -- -- Sending push notifications requires an "Apple Push Services" -- certificate and an Apple-provided device token. -- --
-- openssl x509 -in aps_development.cer -inform DER -outform PEM -out cert.pem -- openssl pkcs12 -in key.p12 -out key.pem -nodes ---- --
-- withAPNSSocket cfg $ \sslsocket -> sendApplePushMessage msg sslsocket ---- -- Note that in practice you should keep the SSL socket open and re-use -- it. From the Apple documentation: "APNs treats rapid connection -- and disconnection as a denial-of-service attack." withAPNSSocket :: APNSConfig -> (SSL -> IO ()) -> IO () -- | Send a message through the SSL socket sendApplePushMessage :: SSL -> ApplePushMessage -> IO () tokenLength :: Num a => a maxPayloadLength :: Num a => a buildPDU :: ApplePushMessage -> Put splitBS :: ByteString -> [ByteString] getExpiryTime :: IO Word32 instance GHC.Classes.Ord Network.PushNotification.IOS.APNSConfig instance GHC.Classes.Eq Network.PushNotification.IOS.APNSConfig instance GHC.Read.Read Network.PushNotification.IOS.APNSConfig instance GHC.Show.Show Network.PushNotification.IOS.APNSConfig module Network.PushNotification.IOS.Payload data ApsPayload ApsPayload :: Aps -> Maybe Text -> ApsPayload [_apsPayload_aps] :: ApsPayload -> Aps [_apsPayload_custom] :: ApsPayload -> Maybe Text data Aps Aps :: Maybe ApsAlert -> Maybe Int -> Maybe Text -> Maybe Int -> Maybe Text -> Maybe Text -> Aps -- | The alert content [_aps_alert] :: Aps -> Maybe ApsAlert -- | The unread count to display on the application icon [_aps_badge] :: Aps -> Maybe Int -- | The filename of the sound to play on notification [_aps_sound] :: Aps -> Maybe Text -- | Used for silent notifications [_aps_contentAvailable] :: Aps -> Maybe Int -- | The app-specific notification category [_aps_category] :: Aps -> Maybe Text -- | The app-specific messaging thread identifier, used to group -- notifications [_aps_threadId] :: Aps -> Maybe Text data ApsAlert ApsAlert :: Text -> Text -> Maybe Text -> ApsAlert [_apsAlert_title] :: ApsAlert -> Text [_apsAlert_body] :: ApsAlert -> Text [_apsAlert_launchImage] :: ApsAlert -> Maybe Text instance Data.Aeson.Types.ToJSON.ToJSON Network.PushNotification.IOS.Payload.ApsPayload instance Data.Aeson.Types.FromJSON.FromJSON Network.PushNotification.IOS.Payload.ApsPayload instance Data.Aeson.Types.ToJSON.ToJSON Network.PushNotification.IOS.Payload.Aps instance Data.Aeson.Types.FromJSON.FromJSON Network.PushNotification.IOS.Payload.Aps instance Data.Aeson.Types.ToJSON.ToJSON Network.PushNotification.IOS.Payload.ApsAlert instance Data.Aeson.Types.FromJSON.FromJSON Network.PushNotification.IOS.Payload.ApsAlert instance GHC.Classes.Ord Network.PushNotification.IOS.Payload.ApsPayload instance GHC.Classes.Eq Network.PushNotification.IOS.Payload.ApsPayload instance GHC.Read.Read Network.PushNotification.IOS.Payload.ApsPayload instance GHC.Show.Show Network.PushNotification.IOS.Payload.ApsPayload instance GHC.Classes.Ord Network.PushNotification.IOS.Payload.Aps instance GHC.Classes.Eq Network.PushNotification.IOS.Payload.Aps instance GHC.Read.Read Network.PushNotification.IOS.Payload.Aps instance GHC.Show.Show Network.PushNotification.IOS.Payload.Aps instance GHC.Classes.Ord Network.PushNotification.IOS.Payload.ApsAlert instance GHC.Classes.Eq Network.PushNotification.IOS.Payload.ApsAlert instance GHC.Read.Read Network.PushNotification.IOS.Payload.ApsAlert instance GHC.Show.Show Network.PushNotification.IOS.Payload.ApsAlert instance Data.Default.Class.Default Network.PushNotification.IOS.Payload.ApsPayload instance Data.Default.Class.Default Network.PushNotification.IOS.Payload.Aps instance Data.Default.Class.Default Network.PushNotification.IOS.Payload.ApsAlert