lib/j7w1/sns_push_client.rb in j7w1-0.0.23 vs lib/j7w1/sns_push_client.rb in j7w1-0.0.24

- old
+ new

@@ -4,23 +4,29 @@ AWS::SNS.new configuration.account end APNS_MAX_MESSAGE_SIZE = 40 - APS_TABLE = { + INPUT_PAYLOAD_TABLE = { + ios: { message: :alert, badge: :badge, sound: :sound, - }.freeze - - ANDROID_TABLE = { + }.freeze, + android: { message: :message, badge: :badge, sound: :sound, data: :data, + }.freeze, }.freeze + DEFAULT_SOUND_VALUE = { + android: true, + ios: 'default', + }.freeze + def create_ios_application(name, certs, private_key, options) sandbox = !(options[:sandbox] == false) configuration = options[:sns_configuration] || J7W1.configuration private_key = content_from private_key @@ -130,27 +136,31 @@ if message_value[:message] && message_value[:message].length > APNS_MAX_MESSAGE_SIZE message_value[:message] = message_value[:message][0...(APNS_MAX_MESSAGE_SIZE - 3)] + '...' end content = { - aps: message_content_with_table(message_value, APS_TABLE), + aps: message_content(message_value, platform: :ios), } content.merge! data: data if data {prefix => content.to_json} end def android_payload_for(message_value, data) message_value.merge!(data: data) { GCM: { - data: message_content_with_table(message_value, ANDROID_TABLE) + data: message_content(message_value, platform: :android), }.to_json } end - def message_content_with_table(content, table) + def message_content(content, platform: nil) + table = INPUT_PAYLOAD_TABLE[platform] + + content[:sound] = DEFAULT_SOUND_VALUE[platform] if content[:sound] == true + table.keys.reduce({}) do |h, key| h[table[key]] = content[key] h end end @@ -163,9 +173,9 @@ argument end end module_function :create_sns_client, :create_ios_application, :create_device_endpoint, :push, - :payload_for, :ios_payload_for, :android_payload_for, :content_from, :message_content_with_table, + :payload_for, :ios_payload_for, :android_payload_for, :content_from, :message_content, :destroy_device_endpoint, :destroy_application_endpoint end end