Mengirim pesan - AWS Push Pesan Pengguna Akhir

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengirim pesan

AWS End User Messaging Push API dapat mengirim pemberitahuan push transaksional ke pengidentifikasi perangkat tertentu. Bagian ini berisi contoh kode lengkap yang dapat Anda gunakan untuk mengirim pemberitahuan push melalui AWS End User Messaging Push API dengan menggunakan file AWS SDK.

Anda dapat menggunakan contoh ini untuk mengirim pemberitahuan push melalui layanan pemberitahuan push apa pun yang didukung oleh AWS End User Messaging Push. Saat ini, AWS End User Messaging Push mendukung saluran berikut: Firebase Cloud Messaging (FCM), Layanan Pemberitahuan Push Apple (APNs), Baidu Cloud Push, dan Amazon Device Messaging (ADM).

Untuk contoh kode lainnya pada titik akhir, segmen, dan saluran, lihat Contoh kode.

catatan

Saat Anda mengirim notifikasi push melalui layanan Firebase Cloud Messaging (FCM), gunakan nama layanan GCM dalam panggilan Anda ke AWS End User Messaging PushAPI. Layanan Google Cloud Messaging (GCM) dihentikan oleh Google pada 10 April 2018. Namun, AWS End User Messaging Push API menggunakan nama GCM layanan untuk pesan yang dikirim melalui FCM layanan untuk menjaga kompatibilitas dengan API kode yang ditulis sebelum penghentian layanan. GCM

GCM (AWS CLI)

Contoh berikut menggunakan send-messages untuk mengirim notifikasi GCM Push dengan. AWS CLI Ganti token dengan token unik perangkat dan 611e3e3cdd47474c9c1399a50example dengan pengenal aplikasi Anda.

aws pinpoint send-messages \ --application-id 611e3e3cdd47474c9c1399a50example \ --message-request file://myfile.json \ --region us-west-2 Contents of myfile.json: { "Addresses": { "token": { "ChannelType" : 'GCM' } }, "MessageConfiguration": { "GCMMessage": { "Action": "URL", "Body": "This is a sample message", "Priority": "normal", "SilentPush": True, "Title": "My sample message", "TimeToLive": 30, "Url": "https://www.example.com" } } }

Contoh berikut menggunakan kirim pesan untuk mengirim pemberitahuan GCM Push, menggunakan semua kunci lama, dengan tombol. AWS CLI Ganti token dengan token unik perangkat dan 611e3e3cdd47474c9c1399a50example dengan pengenal aplikasi Anda.

aws pinpoint send-messages \ --application-id 611e3e3cdd47474c9c1399a50example \ --message-request '{ "MessageConfiguration": { "GCMMessage":{ "RawContent": "{\"notification\": {\n \"title\": \"string\",\n \"body\": \"string\",\n \"android_channel_id\": \"string\",\n \"body_loc_args\": [\n \"string\"\n ],\n \"body_loc_key\": \"string\",\n \"click_action\": \"string\",\n \"color\": \"string\",\n \"icon\": \"string\",\n \"sound\": \"string\",\n \"tag\": \"string\",\n \"title_loc_args\": [\n \"string\"\n ],\n \"title_loc_key\": \"string\"\n },\"data\":{\"message\":\"hello in data\"} }", "TimeToLive" : 309744 } }, "Addresses": { "token": { "ChannelType":"GCM" } } }' \ --region us-east-1

Contoh berikut menggunakan send-messages untuk mengirim pemberitahuan GCM Push dengan payload FCMv1 pesan menggunakan. AWS CLI Ganti token dengan token unik perangkat dan 611e3e3cdd47474c9c1399a50example dengan pengenal aplikasi Anda.

aws pinpoint send-messages \ --application-id 6a2dafd84bec449ea75fb773f4c41fa1 \ --message-request '{ "MessageConfiguration": { "GCMMessage":{ "RawContent": "{\n \"fcmV1Message\": \n {\n \"message\" :{\n \"notification\": {\n \"title\": \"string\",\n \"body\": \"string\"\n },\n \"android\": {\n \"priority\": \"high\",\n \"notification\": {\n \"title\": \"string\",\n \"body\": \"string\",\n \"icon\": \"string\",\n \"color\": \"string\",\n \"sound\": \"string\",\n \"tag\": \"string\",\n \"click_action\": \"string\",\n \"body_loc_key\": \"string\",\n \"body_loc_args\": [\n \"string\"\n ],\n \"title_loc_key\": \"string\",\n \"title_loc_args\": [\n \"string\"\n ],\n \"channel_id\": \"string\",\n \"ticker\": \"string\",\n \"sticky\": true,\n \"event_time\": \"2024-02-06T22:11:55Z\",\n \"local_only\": true,\n \"notification_priority\": \"PRIORITY_UNSPECIFIED\",\n \"default_sound\": false,\n \"default_vibrate_timings\": true,\n \"default_light_settings\": false,\n \"vibrate_timings\": [\n \"22s\"\n ],\n \"visibility\": \"VISIBILITY_UNSPECIFIED\",\n \"notification_count\": 5,\n \"light_settings\": {\n \"color\": {\n \"red\": 1,\n \"green\": 2,\n \"blue\": 3,\n \"alpha\": 6\n },\n \"light_on_duration\": \"112s\",\n \"light_off_duration\": \"1123s\"\n },\n \"image\": \"string\"\n },\n \"data\": {\n \"dataKey1\": \"priority message\",\n \"data_key_3\": \"priority message\",\n \"dataKey2\": \"priority message\",\n \"data_key_5\": \"priority message\"\n },\n \"ttl\": \"10023.32s\"\n },\n \"apns\": {\n \"payload\": {\n \"aps\": {\n \"alert\": {\n \"subtitle\": \"string\",\n \"title-loc-args\": [\n \"string\"\n ],\n \"title-loc-key\": \"string\",\n \"launch-image\": \"string\",\n \"subtitle-loc-key\": \"string\",\n \"subtitle-loc-args\": [\n \"string\"\n ],\n \"loc-args\": [\n \"string\"\n ],\n \"loc-key\": \"string\",\n \"title\": \"string\",\n \"body\": \"string\"\n },\n \"thread-id\": \"string\",\n \"category\": \"string\",\n \"content-available\": 1,\n \"mutable-content\": 1,\n \"target-content-id\": \"string\",\n \"interruption-level\": \"string\",\n \"relevance-score\": 25,\n \"filter-criteria\": \"string\",\n \"stale-date\": 6483,\n \"content-state\": {},\n \"timestamp\": 673634,\n \"dismissal-date\": 4,\n \"attributes-type\": \"string\",\n \"attributes\": {},\n \"sound\": \"string\",\n \"badge\": 5\n }\n }\n },\n \"webpush\": {\n \"notification\": {\n \"permission\": \"granted\",\n \"maxActions\": 2,\n \"actions\": [\n \"title\"\n ],\n \"badge\": \"URL\",\n \"body\": \"Hello\",\n \"data\": {\n \"hello\": \"hey\"\n },\n \"dir\": \"auto\",\n \"icon\": \"icon\",\n \"image\": \"image\",\n \"lang\": \"string\",\n \"renotify\": false,\n \"requireInteraction\": true,\n \"silent\": false,\n \"tag\": \"tag\",\n \"timestamp\": 1707259524964,\n \"title\": \"hello\",\n \"vibrate\": [\n 100,\n 200,\n 300\n ]\n },\n \"data\": {\n \"data1\": \"priority message\",\n \"data2\": \"priority message\",\n \"data12\": \"priority message\",\n \"data3\": \"priority message\"\n }\n },\n \"data\": {\n \"data7\": \"priority message\",\n \"data5\": \"priority message\",\n \"data8\": \"priority message\",\n \"data9\": \"priority message\"\n }\n }\n \n}\n}", "TimeToLive" : 309744 } }, "Addresses": { token: { "ChannelType":"GCM" } } }' \ --region us-east-1

jika menggunakan ImageUrl bidang untukGCM, pinpoint mengirimkan bidang sebagai pemberitahuan data, dengan kuncinyapinpoint.notification.imageUrl, yang dapat mencegah gambar dirender keluar dari kotak. Harap gunakan RawContent atau tambahkan penanganan kunci data seperti mengintegrasikan aplikasi Anda. AWS Amplify

Safari (AWS CLI)

Anda dapat menggunakan AWS End User Messaging Push untuk mengirim pesan ke komputer macOS yang menggunakan browser web Safari Apple. Untuk mengirim pesan ke browser Safari, Anda harus menentukan konten pesan mentah, dan Anda harus menyertakan atribut tertentu dalam payload pesan. Anda dapat melakukannya dengan membuat templat pemberitahuan push dengan payload pesan mentah, atau dengan menentukan konten pesan mentah secara langsung dalam pesan kampanye, di Panduan Pengguna Amazon Pinpoint.

catatan

Atribut khusus ini diperlukan untuk mengirim ke laptop macOS dan komputer desktop yang menggunakan browser web Safari. Tidak diperlukan untuk mengirim ke perangkat iOS seperti iPhones daniPads.

Untuk mengirim pesan ke browser web Safari, Anda harus menentukan payload pesan mentah. Payload pesan mentah harus menyertakan url-args array dalam aps objek. url-argsArray diperlukan untuk mengirim pemberitahuan push ke browser web Safari. Namun, array dapat diterima untuk berisi satu elemen kosong.

Contoh berikut menggunakan send-messages untuk mengirim notifikasi ke browser web Safari dengan file. AWS CLI Ganti token dengan token unik perangkat dan 611e3e3cdd47474c9c1399a50example dengan pengenal aplikasi Anda.

aws pinpoint send-messages \ --application-id 611e3e3cdd47474c9c1399a50example \ --message-request '{ "Addresses": { "token": { "ChannelType":"APNS" } }, "MessageConfiguration": { "APNSMessage": { "RawContent": "{\"aps\": {\"alert\": { \"title\": \"Title of my message\", \"body\": \"This is a push notification for the Safari web browser.\"},\"content-available\": 1,\"url-args\": [\"\"]}}" } } }' \ --region us-east-1

Untuk informasi selengkapnya tentang pemberitahuan push Safari, lihat Mengonfigurasi Pemberitahuan Push Safari di situs web Pengembang Apple.

APNS (AWS CLI)

Contoh berikut menggunakan send-messages untuk mengirim notifikasi APNS Push dengan. AWS CLI Ganti token dengan token unik perangkat, 611e3e3cdd47474c9c1399a50example dengan pengenal aplikasi Anda, dan GAME_INVITATION dengan pengenal unik.

aws pinpoint send-messages \ --application-id 611e3e3cdd47474c9c1399a50example \ --message-request '{ "Addresses": { "token": { "ChannelType":"APNS" } }, "MessageConfiguration": { "APNSMessage": { "RawContent": "{\"aps\" : {\"alert\" : {\"title\" : \"Game Request\",\"subtitle\" : \"Five Card Draw\",\"body\" : \"Bob wants to play poker\"},\"category\" : \"GAME_INVITATION\"},\"gameID\" : \"12345678\"}" } } }' \ --region us-east-1
JavaScript (Node.js)

Gunakan contoh ini untuk mengirim pemberitahuan push dengan menggunakan AWS SDK for JavaScript di Node.js. Contoh ini mengasumsikan bahwa Anda telah menginstal dan mengkonfigurasi SDK for JavaScript di Node.js.

Contoh ini juga mengasumsikan bahwa Anda menggunakan file kredensial bersama untuk menentukan Kunci Akses dan Kunci Akses Rahasia untuk pengguna yang sudah ada. Untuk informasi selengkapnya, lihat Menyetel kredensional di AWS SDKfor JavaScript in Node.js Developer Guide.

'use strict'; const AWS = require('aws-sdk'); // The AWS Region that you want to use to send the message. For a list of // AWS Regions where the API is available const region = 'us-east-1'; // The title that appears at the top of the push notification. var title = 'Test message sent from End User Messaging Push.'; // The content of the push notification. var message = 'This is a sample message sent from End User Messaging Push by using the ' + 'AWS SDK for JavaScript in Node.js'; // The application ID that you want to use when you send this // message. Make sure that the push channel is enabled for the project that // you choose. var applicationId = 'ce796be37f32f178af652b26eexample'; // An object that contains the unique token of the device that you want to send // the message to, and the push service that you want to use to send the message. var recipient = { 'token': 'a0b1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3y4z5a6b7c8d8e9f0', 'service': 'GCM' }; // The action that should occur when the recipient taps the message. Possible // values are OPEN_APP (opens the app or brings it to the foreground), // DEEP_LINK (opens the app to a specific page or interface), or URL (opens a // specific URL in the device's web browser.) var action = 'URL'; // This value is only required if you use the URL action. This variable contains // the URL that opens in the recipient's web browser. var url = 'https://www.example.com'; // The priority of the push notification. If the value is 'normal', then the // delivery of the message is optimized for battery usage on the recipient's // device, and could be delayed. If the value is 'high', then the notification is // sent immediately, and might wake a sleeping device. var priority = 'normal'; // The amount of time, in seconds, that the push notification service provider // (such as FCM or APNS) should attempt to deliver the message before dropping // it. Not all providers allow you specify a TTL value. var ttl = 30; // Boolean that specifies whether the notification is sent as a silent // notification (a notification that doesn't display on the recipient's device). var silent = false; function CreateMessageRequest() { var token = recipient['token']; var service = recipient['service']; if (service == 'GCM') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'GCM' } }, 'MessageConfiguration': { 'GCMMessage': { 'Action': action, 'Body': message, 'Priority': priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } }; } else if (service == 'APNS') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'APNS' } }, 'MessageConfiguration': { 'APNSMessage': { 'Action': action, 'Body': message, 'Priority': priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } }; } else if (service == 'BAIDU') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'BAIDU' } }, 'MessageConfiguration': { 'BaiduMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } }; } else if (service == 'ADM') { var messageRequest = { 'Addresses': { [token]: { 'ChannelType' : 'ADM' } }, 'MessageConfiguration': { 'ADMMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'Url': url } } }; } return messageRequest } function ShowOutput(data){ if (data["MessageResponse"]["Result"][recipient["token"]]["DeliveryStatus"] == "SUCCESSFUL") { var status = "Message sent! Response information: "; } else { var status = "The message wasn't sent. Response information: "; } console.log(status); console.dir(data, { depth: null }); } function SendMessage() { var token = recipient['token']; var service = recipient['service']; var messageRequest = CreateMessageRequest(); // Specify that you're using a shared credentials file, and specify the // IAM profile to use. var credentials = new AWS.SharedIniFileCredentials({ profile: 'default' }); AWS.config.credentials = credentials; // Specify the AWS Region to use. AWS.config.update({ region: region }); //Create a new Pinpoint object. var pinpoint = new AWS.Pinpoint(); var params = { "ApplicationId": applicationId, "MessageRequest": messageRequest }; // Try to send the message. pinpoint.sendMessages(params, function(err, data) { if (err) console.log(err); else ShowOutput(data); }); } SendMessage()
Python

Gunakan contoh ini untuk mengirim pemberitahuan push dengan menggunakan AWS SDK for Python (Boto3). Contoh ini mengasumsikan bahwa Anda telah menginstal dan mengkonfigurasi SDK untuk Python (Boto3).

Contoh ini juga mengasumsikan bahwa Anda menggunakan file kredensial bersama untuk menentukan Kunci Akses dan Kunci Akses Rahasia untuk pengguna yang sudah ada. Untuk informasi selengkapnya, lihat Kredensial di Referensi untuk AWS SDKPython (Boto3). API

import json import boto3 from botocore.exceptions import ClientError # The AWS Region that you want to use to send the message. For a list of # AWS Regions where the API is available region = "us-east-1" # The title that appears at the top of the push notification. title = "Test message sent from End User Messaging Push." # The content of the push notification. message = ("This is a sample message sent from End User Messaging Push by using the " "AWS SDK for Python (Boto3).") # The application ID to use when you send this message. # Make sure that the push channel is enabled for the project or application # that you choose. application_id = "ce796be37f32f178af652b26eexample" # A dictionary that contains the unique token of the device that you want to send the # message to, and the push service that you want to use to send the message. recipient = { "token": "a0b1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x3y4z5a6b7c8d8e9f0", "service": "GCM" } # The action that should occur when the recipient taps the message. Possible # values are OPEN_APP (opens the app or brings it to the foreground), # DEEP_LINK (opens the app to a specific page or interface), or URL (opens a # specific URL in the device's web browser.) action = "URL" # This value is only required if you use the URL action. This variable contains # the URL that opens in the recipient's web browser. url = "https://www.example.com" # The priority of the push notification. If the value is 'normal', then the # delivery of the message is optimized for battery usage on the recipient's # device, and could be delayed. If the value is 'high', then the notification is # sent immediately, and might wake a sleeping device. priority = "normal" # The amount of time, in seconds, that the push notification service provider # (such as FCM or APNS) should attempt to deliver the message before dropping # it. Not all providers allow you specify a TTL value. ttl = 30 # Boolean that specifies whether the notification is sent as a silent # notification (a notification that doesn't display on the recipient's device). silent = False # Set the MessageType based on the values in the recipient variable. def create_message_request(): token = recipient["token"] service = recipient["service"] if service == "GCM": message_request = { 'Addresses': { token: { 'ChannelType': 'GCM' } }, 'MessageConfiguration': { 'GCMMessage': { 'Action': action, 'Body': message, 'Priority' : priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } } elif service == "APNS": message_request = { 'Addresses': { token: { 'ChannelType': 'APNS' } }, 'MessageConfiguration': { 'APNSMessage': { 'Action': action, 'Body': message, 'Priority' : priority, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } } elif service == "BAIDU": message_request = { 'Addresses': { token: { 'ChannelType': 'BAIDU' } }, 'MessageConfiguration': { 'BaiduMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'TimeToLive': ttl, 'Url': url } } } elif service == "ADM": message_request = { 'Addresses': { token: { 'ChannelType': 'ADM' } }, 'MessageConfiguration': { 'ADMMessage': { 'Action': action, 'Body': message, 'SilentPush': silent, 'Title': title, 'Url': url } } } else: message_request = None return message_request # Show a success or failure message, and provide the response from the API. def show_output(response): if response['MessageResponse']['Result'][recipient["token"]]['DeliveryStatus'] == "SUCCESSFUL": status = "Message sent! Response information:\n" else: status = "The message wasn't sent. Response information:\n" print(status, json.dumps(response,indent=4)) # Send the message through the appropriate channel. def send_message(): token = recipient["token"] service = recipient["service"] message_request = create_message_request() client = boto3.client('pinpoint',region_name=region) try: response = client.send_messages( ApplicationId=application_id, MessageRequest=message_request ) except ClientError as e: print(e.response['Error']['Message']) else: show_output(response) send_message()

Sumber daya tambahan