NAME

WWW::FCM::HTTP - HTTP Client for Firebase Cloud Messaging

SYNOPSIS

use WWW::FCM::HTTP;

my $api_key = 'Your API key'; # from google-services.json
my $fcm     = WWW::FCM::HTTP->new({ api_key => $api_key });

# send multicast request
my $res = $fcm->send({
    registration_ids => [ $reg_id, ... ],
    data             => {
        message   => 'blah blah blah',
        other_key => 'foo bar baz',
    },
});

# handle HTTP error
unless ($res->is_success) {
    die $res->error;
}

my $multicast_id  = $res->multicast_id;
my $success       = $res->success;
my $failure       = $res->failure;
my $canonical_ids = $res->canonical_ids;
my $results       = $res->results;
while (my $result = $results->next) {
    my $sent_reg_id     = $result->sent_reg_id;
    my $message_id      = $result->message_id;
    my $registration_id = $result->registration_id;
    my $error           = $result->error;

    if ($result->is_success) {
        say sprintf 'message_id: %s, sent_reg_id: %s',
            $message_id, $sent_reg_id;
    }
    else {
        warn sprintf 'error: %s, sent_reg_id: %s',
            $error, $sent_reg_id;
    }

    if ($result->has_canonical_id) {
        say sprintf 'sent_reg_id: %s is old registration_id, you will update to %s',
            $sent_reg_id, $registration_id;
    }
}

DESCRIPTION

WWW::FCM::HTTP is a HTTP Clinet for Firebase Cloud Messaging.

SEE ALSO https://firebase.google.com/docs/cloud-messaging/http-server-ref.

METHODS

new(\%args)

my $fcm = WWW::FCM::HTTP->new({
    api_key => $api_key,
});
api_key : Str

Required. FCM API Key. See client.api_key in google-services.json.

api_url : Str

Optional. https://fcm.googleapis.com/fcm/send by default.

ua : LWP::UserAgent

Optional. You can override custom LWP::UserAgent instance if needed.

send(\%payload)

Send request to FCM. Returns WWW::FCM::HTTP::Response instance.

my $res = $fcm->send({
    to   => '/topics/all',
    data => {
        title => 'message title',
        body  => 'message body',
    },
});

The possible parameters are see documents https://firebase.google.com/docs/cloud-messaging/http-server-ref.

LICENSE

Copyright (C) xaicron.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

xaicron <xaicron@gmail.com>