pushr-apns 1.0.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
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.