PushManagerProtocol

public protocol PushManagerProtocol : AnyObject

Object representing the PushManager used to manage subscriptions

The PushManager object is the main interface provided by this crate it allow consumers to manage push subscriptions. It exposes methods that interact with the autopush server and persists state representing subscriptions.

  • Decrypts a raw push message.

    This accepts the content of a Push Message (from websocket or via Native Push systems). # Arguments:

    • payload: The Push payload as received by the client from Push.

    # Returns Decrypted message body

    # Errors Returns an error in the following cases:

    • The PushManager does not contain a valid UAID
    • There are no records associated with the UAID the [PushManager] contains
    • An error occurred while decrypting the message
    • An error occurred accessing the PushManager’s persisted storage

    Declaration

    Swift

    func decrypt(payload: [String : String]) throws -> DecryptResponse
  • Retrieves an existing push subscription

    # Arguments

    • scope - Site scope string

    # Returns A Subscription response that includes the following:

    • A URL that can be used to deliver push messages
    • A cryptographic key that can be used to encrypt messages that would then be decrypted using the [PushManager::decrypt] function

    # Errors Returns an error in the following cases:

    • PushManager was unable to access its persisted storage
    • An error occurred generating or deserializing the cryptographic keys

    Declaration

    Swift

    func getSubscription(scope: String) throws -> SubscriptionResponse?
  • Subscribes to a new channel and gets the Subscription Info block

    # Arguments

    • scope - Site scope string
    • server_key - optional VAPID public key to “lock” subscriptions (defaults to “” for no key)

    # Returns A Subscription response that includes the following:

    • A URL that can be used to deliver push messages
    • A cryptographic key that can be used to encrypt messages that would then be decrypted using the [PushManager::decrypt] function

    # Errors Returns an error in the following cases:

    • PushManager was unable to access its persisted storage
    • An error occurred sending a subscription request to the autopush server
    • An error occurred generating or deserializing the cryptographic keys

    Declaration

    Swift

    func subscribe(scope: String, appServerSey: String?) throws -> SubscriptionResponse
  • Unsubscribe from given scope, ending that subscription for the user.

    # Arguments

    • scope - The scope for the channel to remove

    # Returns Returns a boolean. Boolean is False if the subscription was already terminated in the past.

    # Errors Returns an error in the following cases:

    • An error occurred sending an unsubscribe request to the autopush server
    • An error occurred accessing the PushManager’s persisted storage

    Declaration

    Swift

    func unsubscribe(scope: String) throws -> Bool
  • Unsubscribe all channels for the user

    # Errors Returns an error in the following cases:

    • The PushManager does not contain a valid UAID
    • An error occurred sending an unsubscribe request to the autopush server
    • An error occurred accessing the PushManager’s persisted storage

    Declaration

    Swift

    func unsubscribeAll() throws
  • Updates the Native OS push registration ID.

    # Arguments:

    • new_token - the new Native OS push registration ID

    # Errors Return an error in the following cases:

    • The PushManager does not contain a valid UAID
    • An error occurred sending an update request to the autopush server
    • An error occurred accessing the PushManager’s persisted storage

    Declaration

    Swift

    func update(registrationToken: String) throws
  • Verifies the connection state

    NOTE: This does not resubscribe to any channels it only returns the list of channels that the client should re-subscribe to.

    # Returns Returns a list of [PushSubscriptionChanged] indicating the channels the consumer the client should re-subscribe to. If the list is empty, the client’s connection was verified successfully, and the client does not need to resubscribe

    # Errors Return an error in the following cases:

    • The PushManager does not contain a valid UAID
    • An error occurred sending an channel list retrieval request to the autopush server
    • An error occurred accessing the PushManager’s persisted storage

    Declaration

    Swift

    func verifyConnection(forceVerify: Bool) throws -> [PushSubscriptionChanged]