Net::APNS::Simple - APNS Perl implementation
A Perl implementation for sending notifications via APNS using Apple's new HTTP/2 API. This library uses Protocol::HTTP2::Client as http2 backend. And it also supports multiple stream at one connection. (It does not correspond to parallel stream because APNS server returns SETTINGS_MAX_CONCURRENT_STREAMS = 1.)
use Net::APNS::Simple;
# With provider authentication tokens
my $apns = Net::APNS::Simple->new(
# enable if development
# development => 1,
auth_key => '/path/to/auth_key.p8',
key_id => 'AUTH_KEY_ID',
team_id => 'APP_PREFIX',
bundle_id => 'APP_ID',
);
# With SSL certificates
my $apns = Net::APNS::Simple->new(
# enable if development
# development => 1,
cert_file => '/path/to/cert.pem',
key_file => '/path/to/key.pem',
passwd_cb => sub { return 'key-password' },
bundle_id => 'APP_ID',
);
# 1st request
$apns->prepare('DEVICE_ID',{
aps => {
alert => 'APNS message: HELLO!',
badge => 1,
sound => "default",
# SEE: https://developer.apple.com/jp/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/TheNotificationPayload.html,
},
}, sub {
my ($header, $content) = @_;
require Data::Dumper;
print Dumper $header;
# $VAR1 = [
# ':status',
# '200',
# 'apns-id',
# '791DE8BA-7CAA-B820-BD2D-5B12653A8DF3'
# ];
print Dumper $content;
# $VAR1 = undef;
}
);
# 2nd request
$apns->prepare(...);
# also supports method chain
# $apns->prepare(1st request)->prepare(2nd request)....
# send notification
$apns->notify();
-
development : bool
Switch API's URL to 'api.sandbox.push.apple.com' if enabled.
-
auth_key : string
Private key file for APNS obtained from Apple.
-
team_id : string
Team ID (App Prefix)
-
bundle_id : string
Bundle ID (App ID)
-
cert_file : string
SSL certificate file.
-
key_file : string
SSL key file.
-
passwd_cb : sub reference
If the private key is encrypted, this should be a reference to a subroutine that should return the password required to decrypt your private key.
-
apns_id : string
Canonical UUID that identifies the notification (apns-id header).
-
apns_expiration : number
Sets the apns-expiration header.
-
apns_priority : number
Sets the apns-priority header. Default 10.
-
apns_collapse_id : string
Sets the apns-collapse-id header.
-
apns_push_type : string
Sets the apns-push-type header.
-
proxy : string
URL of a proxy server. Default $ENV{https_proxy}. Pass undef to disable proxy.
All properties can be accessed as Getter/Setter like
$apns->development
.
Prepare notification. It is possible to specify more than one. Please do before invoking notify method.
$apns->prepare(1st request)->prepare(2nd request)....
Payload please refer: https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html#//apple\_ref/doc/uid/TP40008194-CH17-SW1.
Execute notification. Multiple notifications can be executed with one SSL connection.
Copyright (C) Tooru Tsurukawa.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Tooru Tsurukawa <rockbone.g at gmail.com>