pushr-apns 1.0.1 → 1.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4549666b3b9c3974b499b5bde0b4791735d8ab21
4
- data.tar.gz: a6484b5c51a81596fa5c5007795bcd9a6916087d
3
+ metadata.gz: 27c667b7eb5e0fd2435fd8e5405c1886832642ce
4
+ data.tar.gz: 338a2dfd2d22a2bacceceb790e1c7d2771908c2a
5
5
  SHA512:
6
- metadata.gz: b7d79bda71e99a0ec275fd5f91efc90f9b20d2d6dee2a57abbfcfefb2f706675e7705e4631f02c31cfbe4267d668a9497ecd739458db0704cae990968e111c0c
7
- data.tar.gz: 41f2ef97f9074a3ab7842aac3343174a014d62edb0c00f46b436bad8869d7176522f8953a2ad3f8f35b27b5e345a86ec7c7bbb7aff534058b480b8946ba2aae7
6
+ metadata.gz: 115003a2d0d957bce597a0153a8d11596def1d02eeb00b552d343e75e24640545d0ad594b82ef669528733ba9737cf2bd1affdc027e86e7caf3ce1c3f5400817
7
+ data.tar.gz: d70001a56f5d2463a4d5f1747408489499473ec1a9243712bb93c19fed5716a03248e5b1821e481889c21325d73172ac54a7e32ff83babd62a675c4b7404228b
@@ -1,3 +1,3 @@
1
1
  module PushrApns
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.3'
3
3
  end
@@ -18,8 +18,9 @@ module Pushr
18
18
  6 => 'Missing topic size',
19
19
  7 => 'Missing payload size',
20
20
  8 => 'Invalid token',
21
+ 10 => 'Shutdown (APNS is in maintenance)',
21
22
  255 => 'None (unknown error)'
22
- }
23
+ } # https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW3
23
24
 
24
25
  def initialize(configuration, i = nil)
25
26
  @configuration = configuration
@@ -97,8 +98,15 @@ module Pushr
97
98
  if tuple = read(ERROR_TUPLE_BYTES)
98
99
  _, code, notification_id = tuple.unpack('ccN')
99
100
 
100
- description = APN_ERRORS[code.to_i] || 'Unknown error. Possible push bug?'
101
- error = Pushr::Daemon::DeliveryError.new(code, notification, description, 'APNS')
101
+ if code.to_i == 8
102
+ Pushr::FeedbackApns.create(app: @configuration.app, device: notification.device, follow_up: 'delete',
103
+ failed_at: Time.now)
104
+ Pushr::Daemon.logger.info("[#{@name}] Invalid device (error 8), feedback sent, message delivery failed"\
105
+ " to #{notification.to_json}")
106
+ else
107
+ description = APN_ERRORS[code.to_i] || 'Unknown error. Possible push bug?'
108
+ error = Pushr::Daemon::DeliveryError.new(code, notification, description, 'APNS')
109
+ end
102
110
  else
103
111
  error = DisconnectionError.new
104
112
  end
@@ -2,7 +2,7 @@ module Pushr
2
2
  class MessageApns < Pushr::Message
3
3
  POSTFIX = 'apns'
4
4
 
5
- attr_accessor :device, :badge, :sound, :expiry, :attributes_for_device, :content_available, :priority
5
+ attr_accessor :device, :badge, :sound, :category, :expiry, :attributes_for_device, :content_available, :priority
6
6
  validates :badge, numericality: true, allow_nil: true
7
7
  validates :expiry, numericality: true, presence: true
8
8
  validates :device, format: { with: /\A[a-z0-9]{64}\z/ }
@@ -49,9 +49,9 @@ module Pushr
49
49
  end
50
50
 
51
51
  def to_hash
52
- hsh = { type: self.class.to_s, app: app, device: device, alert: alert, badge: badge,
53
- sound: sound, expiry: expiry, attributes_for_device: attributes_for_device,
54
- content_available: content_available, priority: priority }
52
+ hsh = { type: self.class.to_s, app: app, device: device, alert: alert, badge: badge, sound: sound, expiry: expiry,
53
+ category: category, attributes_for_device: attributes_for_device, priority: priority,
54
+ content_available: content_available }
55
55
  hsh[Pushr::Core.external_id_tag] = external_id if external_id
56
56
  hsh
57
57
  end
@@ -64,14 +64,15 @@ module Pushr
64
64
  json['aps']['alert'] = alert if alert
65
65
  json['aps']['badge'] = badge if badge
66
66
  json['aps']['sound'] = sound if sound
67
+ json['aps']['category'] = category if category
67
68
  json['aps']['content-available'] = content_available if content_available
68
69
  attributes_for_device.each { |k, v| json[k.to_s] = v.to_s } if attributes_for_device
69
70
  json
70
71
  end
71
72
 
72
73
  def max_payload_size
73
- if payload_size > 256
74
- errors.add(:payload, 'APN notification cannot be larger than 256 bytes. Try condensing your alert and device attributes.')
74
+ if payload_size > 2048
75
+ errors.add(:payload, 'APN notification cannot be larger than 2048 bytes. Try condensing your alert and attributes.')
75
76
  end
76
77
  end
77
78
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pushr-apns
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Pesman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-26 00:00:00.000000000 Z
11
+ date: 2015-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
@@ -216,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
216
  version: '0'
217
217
  requirements: []
218
218
  rubyforge_project:
219
- rubygems_version: 2.2.2
219
+ rubygems_version: 2.4.6
220
220
  signing_key:
221
221
  specification_version: 4
222
222
  summary: APNS (iOS/Apple) part of the modular push daemon.