NAME
Net::APNS::Simple - APNS Perl implementation
DESCRIPTION
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.)
You can not use the key obtained from Apple at the moment, see the item of Caution below.
SYNOPSIS
use Net::APNS::Simple;
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',
apns_expiration => 0,
apns_priority => 10,
);
# 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();
METHODS
my $apns = Net::APNS::Simple->new(%arg)
- development : bool
-
Switch API's URL to 'api.development.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)
- apns_expiration : number
-
Default 0.
- apns_priority : number
-
Default 10.
All properties can be accessed as Getter/Setter like `$apns->development`.
$apns->prepare($DEVICE_ID, $PAYLOAD);
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.
$apns->notify();
Execute notification. Multiple notifications can be executed with one SSL connection.
CAUTION
Crypt::PK::ECC can not import the key obtained from Apple as it is. This is currently being handled as Issue. Please use the openssl command to specify the converted key as follows until the modified version appears.
openssl pkcs8 -in APNs-apple.p8 -inform PEM -out APNs-resaved.p8 -outform PEM -nocrypt
LICENSE
Copyright (C) Tooru Tsurukawa.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
Tooru Tsurukawa <rockbone.g at gmail.com>