apnotic 1.7.1 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +2 -2
- data/.tool-versions +1 -1
- data/README.md +7 -1
- data/apnotic.gemspec +4 -3
- data/lib/apnotic/connection_pool.rb +2 -2
- data/lib/apnotic/notification.rb +2 -1
- data/lib/apnotic/version.rb +1 -1
- metadata +28 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d2c8f08a0d9451a3c53a3bbce9f7f102e7916cdb7eade84bc648309b491fa422
|
|
4
|
+
data.tar.gz: 8872c23306319b2e1d10ad18c95f212e1999e0c44d2be38eaa2027a8b081485a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 49f376853dd12d3e54e264711974d734b1d3b46aff3407f0c78322ecfff749d5e2d82d2b37a5d3f53466734dd7ea4077b266ed3f077c03ca1869afcdceec895b
|
|
7
|
+
data.tar.gz: ec58ef110e9ff5b675bb451e7b9cc9420b86d28042a04ab629cfe7f6ab083db983b4fdba0752f6a2d8200556b9b4f0f4f4a5fbb5cfb169ab7c42df0efc734720
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -7,9 +7,9 @@ jobs:
|
|
|
7
7
|
runs-on: ubuntu-latest
|
|
8
8
|
strategy:
|
|
9
9
|
matrix:
|
|
10
|
-
ruby-version: ['
|
|
10
|
+
ruby-version: ['3.2', '3.3', '3.4', '4.0']
|
|
11
11
|
steps:
|
|
12
|
-
- uses: actions/checkout@
|
|
12
|
+
- uses: actions/checkout@v6
|
|
13
13
|
- name: Set up Ruby
|
|
14
14
|
uses: ruby/setup-ruby@v1
|
|
15
15
|
with:
|
data/.tool-versions
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
ruby 3.
|
|
1
|
+
ruby 3.4.5
|
data/README.md
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
[](https://github.com/ostinelli/apnotic/actions/workflows/ci.yml)
|
|
2
|
-
[](https://codeclimate.com/github/ostinelli/apnotic)
|
|
3
2
|
[](https://badge.fury.io/rb/apnotic)
|
|
4
3
|
|
|
5
4
|
# Apnotic
|
|
@@ -43,6 +42,8 @@ token = "6c267f26b173cd9595ae2f6702b1ab560371a60e7c8a9e27419bd0fa4a42e58f"
|
|
|
43
42
|
|
|
44
43
|
notification = Apnotic::Notification.new(token)
|
|
45
44
|
notification.alert = "Notification from Apnotic!"
|
|
45
|
+
notification.topic = "com.example.myapp" # your identifier found on https://developer.apple.com/account/resources/identifiers/list
|
|
46
|
+
|
|
46
47
|
|
|
47
48
|
# send (this is a blocking call)
|
|
48
49
|
response = connection.push(notification)
|
|
@@ -71,6 +72,7 @@ token = "6c267f26b173cd9595ae2f6702b1ab560371a60e7c8a9e27419bd0fa4a42e58f"
|
|
|
71
72
|
|
|
72
73
|
notification = Apnotic::Notification.new(token)
|
|
73
74
|
notification.alert = "Notification from Apnotic!"
|
|
75
|
+
notification.topic = "com.example.myapp" # your identifier found on https://developer.apple.com/account/resources/identifiers/list
|
|
74
76
|
|
|
75
77
|
# prepare push
|
|
76
78
|
push = connection.prepare_push(notification)
|
|
@@ -325,6 +327,7 @@ These are all Accessor attributes.
|
|
|
325
327
|
| `content_state` | Refer to [Payload Key Reference](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification#2943363) for details. iOS 16+
|
|
326
328
|
| `timestamp` | Refer to [Payload Key Reference](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification#2943363) for details. iOS 16+
|
|
327
329
|
| `event` | Refer to [Payload Key Reference](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification#2943363) for details. iOS 16+
|
|
330
|
+
| `dismissal_date` | Refer to [Payload Key Reference](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification#2943363) for details. iOS 16+
|
|
328
331
|
| `apns_id` | Refer to [Communicating with APNs](https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html) for details.
|
|
329
332
|
| `expiration` | "
|
|
330
333
|
| `priority` | "
|
|
@@ -416,6 +419,9 @@ Optionally, you may covert the p12 file to a pem file (this step is optional bec
|
|
|
416
419
|
$ openssl pkcs12 -in cert.p12 -out apple_push_notification_production.pem -nodes -clcerts
|
|
417
420
|
```
|
|
418
421
|
|
|
422
|
+
If you see the error `PKCS12_parse: unsupported`, when attempting to create a connection, you might need to [re-encrypt your certificate](https://help.heroku.com/88GYDTB2/how-do-i-configure-openssl-to-allow-the-use-of-legacy-cryptographic-algorithms).
|
|
423
|
+
|
|
424
|
+
|
|
419
425
|
|
|
420
426
|
## Thread-Safety
|
|
421
427
|
Apnotic is thread-safe. However, some caution is imperative:
|
data/apnotic.gemspec
CHANGED
|
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
|
11
11
|
spec.email = ["roberto@ostinelli.net"]
|
|
12
12
|
spec.summary = %q{Apnotic is an Apple Push Notification gem able to provide instant feedback.}
|
|
13
13
|
spec.homepage = "http://github.com/ostinelli/apnotic"
|
|
14
|
-
spec.required_ruby_version = '>=2.
|
|
14
|
+
spec.required_ruby_version = '>= 3.2.0'
|
|
15
15
|
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
17
17
|
spec.bindir = "exe"
|
|
@@ -19,9 +19,10 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
21
|
spec.add_dependency "net-http2", ">= 0.18.3", "< 2"
|
|
22
|
-
spec.add_dependency "connection_pool", "
|
|
22
|
+
spec.add_dependency "connection_pool", ">= 2", "< 4"
|
|
23
|
+
spec.add_dependency "base64"
|
|
23
24
|
|
|
24
25
|
spec.add_development_dependency "bundler"
|
|
25
|
-
spec.add_development_dependency "rake", ">=
|
|
26
|
+
spec.add_development_dependency "rake", ">= 13.3.1"
|
|
26
27
|
spec.add_development_dependency "rspec", "~> 3.0"
|
|
27
28
|
end
|
|
@@ -8,7 +8,7 @@ module Apnotic
|
|
|
8
8
|
def new(options={}, pool_options={})
|
|
9
9
|
raise(LocalJumpError, "a block is needed when initializing an Apnotic::ConnectionPool") unless block_given?
|
|
10
10
|
|
|
11
|
-
::ConnectionPool.new(pool_options) do
|
|
11
|
+
::ConnectionPool.new(**pool_options) do
|
|
12
12
|
connection = Apnotic::Connection.new(options)
|
|
13
13
|
yield(connection)
|
|
14
14
|
connection
|
|
@@ -18,7 +18,7 @@ module Apnotic
|
|
|
18
18
|
def development(options={}, pool_options={})
|
|
19
19
|
raise(LocalJumpError, "a block is needed when initializing an Apnotic::ConnectionPool") unless block_given?
|
|
20
20
|
|
|
21
|
-
::ConnectionPool.new(pool_options) do
|
|
21
|
+
::ConnectionPool.new(**pool_options) do
|
|
22
22
|
connection = Apnotic::Connection.development(options)
|
|
23
23
|
yield(connection)
|
|
24
24
|
connection
|
data/lib/apnotic/notification.rb
CHANGED
|
@@ -5,7 +5,7 @@ module Apnotic
|
|
|
5
5
|
class Notification < AbstractNotification
|
|
6
6
|
attr_accessor :alert, :badge, :sound, :content_available, :category, :custom_payload, :url_args, :mutable_content, :thread_id
|
|
7
7
|
attr_accessor :target_content_id, :interruption_level, :relevance_score
|
|
8
|
-
attr_accessor :stale_date, :content_state, :timestamp, :event
|
|
8
|
+
attr_accessor :stale_date, :content_state, :timestamp, :event, :dismissal_date
|
|
9
9
|
|
|
10
10
|
def background_notification?
|
|
11
11
|
aps.count == 1 && aps.key?('content-available') && aps['content-available'] == 1
|
|
@@ -30,6 +30,7 @@ module Apnotic
|
|
|
30
30
|
result.merge!('content-state' => content_state) if content_state
|
|
31
31
|
result.merge!('timestamp' => timestamp) if timestamp
|
|
32
32
|
result.merge!('event' => event) if event
|
|
33
|
+
result.merge!('dismissal-date' => dismissal_date) if dismissal_date
|
|
33
34
|
end
|
|
34
35
|
end
|
|
35
36
|
|
data/lib/apnotic/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: apnotic
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Roberto Ostinelli
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: net-http2
|
|
@@ -34,16 +33,36 @@ dependencies:
|
|
|
34
33
|
name: connection_pool
|
|
35
34
|
requirement: !ruby/object:Gem::Requirement
|
|
36
35
|
requirements:
|
|
37
|
-
- - "
|
|
36
|
+
- - ">="
|
|
38
37
|
- !ruby/object:Gem::Version
|
|
39
38
|
version: '2'
|
|
39
|
+
- - "<"
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '4'
|
|
40
42
|
type: :runtime
|
|
41
43
|
prerelease: false
|
|
42
44
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
45
|
requirements:
|
|
44
|
-
- - "
|
|
46
|
+
- - ">="
|
|
45
47
|
- !ruby/object:Gem::Version
|
|
46
48
|
version: '2'
|
|
49
|
+
- - "<"
|
|
50
|
+
- !ruby/object:Gem::Version
|
|
51
|
+
version: '4'
|
|
52
|
+
- !ruby/object:Gem::Dependency
|
|
53
|
+
name: base64
|
|
54
|
+
requirement: !ruby/object:Gem::Requirement
|
|
55
|
+
requirements:
|
|
56
|
+
- - ">="
|
|
57
|
+
- !ruby/object:Gem::Version
|
|
58
|
+
version: '0'
|
|
59
|
+
type: :runtime
|
|
60
|
+
prerelease: false
|
|
61
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
62
|
+
requirements:
|
|
63
|
+
- - ">="
|
|
64
|
+
- !ruby/object:Gem::Version
|
|
65
|
+
version: '0'
|
|
47
66
|
- !ruby/object:Gem::Dependency
|
|
48
67
|
name: bundler
|
|
49
68
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -64,14 +83,14 @@ dependencies:
|
|
|
64
83
|
requirements:
|
|
65
84
|
- - ">="
|
|
66
85
|
- !ruby/object:Gem::Version
|
|
67
|
-
version:
|
|
86
|
+
version: 13.3.1
|
|
68
87
|
type: :development
|
|
69
88
|
prerelease: false
|
|
70
89
|
version_requirements: !ruby/object:Gem::Requirement
|
|
71
90
|
requirements:
|
|
72
91
|
- - ">="
|
|
73
92
|
- !ruby/object:Gem::Version
|
|
74
|
-
version:
|
|
93
|
+
version: 13.3.1
|
|
75
94
|
- !ruby/object:Gem::Dependency
|
|
76
95
|
name: rspec
|
|
77
96
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -86,7 +105,6 @@ dependencies:
|
|
|
86
105
|
- - "~>"
|
|
87
106
|
- !ruby/object:Gem::Version
|
|
88
107
|
version: '3.0'
|
|
89
|
-
description:
|
|
90
108
|
email:
|
|
91
109
|
- roberto@ostinelli.net
|
|
92
110
|
executables: []
|
|
@@ -120,7 +138,6 @@ homepage: http://github.com/ostinelli/apnotic
|
|
|
120
138
|
licenses:
|
|
121
139
|
- MIT
|
|
122
140
|
metadata: {}
|
|
123
|
-
post_install_message:
|
|
124
141
|
rdoc_options: []
|
|
125
142
|
require_paths:
|
|
126
143
|
- lib
|
|
@@ -128,15 +145,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
128
145
|
requirements:
|
|
129
146
|
- - ">="
|
|
130
147
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: 2.
|
|
148
|
+
version: 3.2.0
|
|
132
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
150
|
requirements:
|
|
134
151
|
- - ">="
|
|
135
152
|
- !ruby/object:Gem::Version
|
|
136
153
|
version: '0'
|
|
137
154
|
requirements: []
|
|
138
|
-
rubygems_version: 3.
|
|
139
|
-
signing_key:
|
|
155
|
+
rubygems_version: 3.7.1
|
|
140
156
|
specification_version: 4
|
|
141
157
|
summary: Apnotic is an Apple Push Notification gem able to provide instant feedback.
|
|
142
158
|
test_files: []
|