2016-08-06 2 views
0

Благодаря этому сообществу я узнал, что можно отправлять уведомления AWS SNS Push через Lambda с помощью node.js (в результате миграции Parse). Я все еще борется со следующим:AWS Lambda для клиента клиенту Push-уведомления

  • Можно ли это сделать клиенту клиенту x нравится y's z. Где x является пользователем 1, y является пользователем 2, а z является объектом, который нравится? Если это так, похоже, что Cognito не требуется, чтобы он мог читать напрямую из базы данных, но это точно?
  • Есть ли у кого-нибудь пример того, как это было реализовано?

Опять же, мы не хотим передавать всем пользователям по расписанию, а только когда клиент выполняет какое-либо действие.

Большое спасибо!

+0

Какие базы данных вы используете? Похоже, вы хотели бы инициировать эти уведомления из действия базы данных хранения сгенерированного «похожего», а не от клиента, фактически генерирующего «как». –

+0

Мы используем mLab - формально MongoDB – JustK

ответ

2

Предположим, у вас есть Device1, который создает часть контента. Это распространяется на нескольких пользователей. Device2 получает этот контент и «любит» его.

Успение: Вы зарегистрировались для push-уведомлений на устройстве и создали конечную точку SNS на AWS. Вы сохранили ARN конечной точки в своей базе данных и связали ее с идентификатором Cognito или с идентификатором содержимого. Если ваши данные нормализованы, то обычно у вас будет конечная точка SNS, связанная с устройством.

Ваш Лямбда должен иметь доступ к этому источнику данных и искать ту конечную точку SNS для отправки push-уведомлений. Это будет зависеть от того, какое хранилище данных вы используете (RDS, DynamoDB, что-то еще). Какой доступ, и как вы его защищаете, - это целая другая тема.

С вашего Лямбда вы получаете ARN для отправки push-уведомления. Если вы передадите идентификатор содержимого из «Имени» и получите идентификатор Cognito с устройства, которое понравилось, вы можете найти необходимую информацию. Затем вы создаете полезную нагрузку SNS (я предполагаю APNS в этом примере), а затем отправляю ее в SNS.

var message = { 
    "default": "New Like!", 
    "APNS": { 
     "aps": { 
      "alert": "New Like!" 
     }    
    } 
}; 


var deviceParams = { 
    Message: JSON.stringify(message), 
    Subject: "New Like", 
    TargetArn: targetArn, 
    MessageStructure: "json" 
}; 

self.sns.publish(deviceParams, function (err) { 

    if (err) { 
     console.error("Error sending SNS: ", err); 
    } 
}); 

Это еще не все для вас, как будто это может быть с парсером. Вам нужно много работать на AWS, но у вас есть неограниченная власть делать то, что вы хотите.

Если это слишком много, вы можете рассмотреть новую обновленную платформу Firebase от Google. Это очень похоже на парсы: https://firebase.google.com/

Надеюсь, что это поможет вам немного продвинуться вперед.

Дальнейшее чтение:

http://docs.aws.amazon.com/sns/latest/dg/mobile-push-apns.html

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/TheNotificationPayload.html

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html