测试A3L Messaging
测试A3L Messaging
通过在Android和Fire OS设备上部署应用并发送测试消息来测试应用。本页介绍发送测试消息的三个选项:控制台、服务器端脚本和特定于解决方案的API。
要发送通知,您需要安装应用的设备的设备ID。有关如何获取设备ID的详细信息,请遵循初始化A3L Messaging中的步骤。
使用控制台进行测试
FCM和ADM都有控制台,可以用来发送推送通知。如果您更喜欢UI体验,可能需要使用此方法。
使用ADM控制台测试您的应用
要测试与ADM的集成,可以使用ADM控制台并按照以下指示发送推送通知。
- 转到ADM控制台,并根据提示登录。
- 输入应用的客户端ID和客户端密钥。您应该在获取ADM凭证时就拥有了这些信息。
- 在设备注册ID字段中,输入初始化A3L Messaging时获取的设备ID。
- 选择数据消息。
- 为要发送的通知添加键值对。
- 对于标题,将键设置为“a3l.notification.title”,并将值设置为所需的通知标题。
- 要添加正文,将键设置为“a3l.notification.body”,并将值设置为所需的通知文本。
- 或者,要添加图像,将键设置为“a3l.notification.image”,并将值设置为图像的URL。
- 添加任何其他所需字段。有关字段的详尽列表以及它们如何映射到Android通知,请参阅A3L Messaging通知键。
- 在消息将在经过以下时长后过期部分中选择消息的持续时间。
- 添加完键值对后,单击发送测试消息。
检查您的设备是否收到了通知。
还可以通过选择自己的键值对来发送自定义消息。可以选择键的名称,但请确保它们与A3L Messaging通知键不同。必须在A3LMessagingService
类实现的onMessageReceived()
方法中处理自定义消息。
使用Firebase控制台测试您的应用
要测试与FCM的集成,请使用Firebase控制台中的Notification Composer发送推送通知。
- 转到Firebase控制台。
- 选择要为其发送测试推送通知的项目。
- 在左侧边栏上,展开Engage(互动)部分并选择Cloud Messaging。
- 单击New notification(新建通知)。
- 在Notification text(通知文本)字段中输入消息。您可以选择填写Notification title(通知标题)、Notification image(通知图像)或Notification name(通知名称)字段。
- 单击设备预览部分中的发送测试消息。
- 在叠加层中,在Add an FCM registration token(添加FCM注册令牌)字段中输入设备ID。您的设备ID是在初始化A3L Messaging时获取的。
- 单击Test(测试)。
您的应用应该会收到推送通知。
使用服务器端脚本进行测试
以下服务器端脚本让您能够向设备发送通知。
- ADMWebServer.py是向Fire OS设备发送通知的Python脚本。
- FCMWebServer.py是向Android设备发送通知的Python脚本。
单击以下按钮获取脚本代码。要发送测试通知,请复制代码,将其粘贴到编辑器中,并更新注释中指示的值。然后将每个脚本保存为.py文件并运行脚本。
已复制到剪贴板。
ADMWebServer.py
import requests
import json
# 更新这些值以发送推送通知
# 用于发送ADM消息的客户端ID
client_id = ""
# 用于发送ADM消息的客户端密钥
client_secret = ""
# 要向其发送通知的设备ID
deviceId = ""
notification = {
"title":"A3L通知",
"body":"A3L通知在Fire OS平台上正常运行!"
}
########### 请勿更改此行下方的任何代码 ##################
Auth_token_URL = "https://api.amazon.com/auth/O2/token"
auth_token_headers = {'Content-Type' : 'application/x-www-form-urlencoded', 'Accept-Charset' : 'application/x-www-form-urlencoded'}
auth_token_data = {'grant_type' : 'client_credentials', 'scope': 'messaging:push', 'client_id': client_id, 'client_secret': client_secret}
send_message_url_part = "https://api.amazon.com/messaging/registrations/"
send_message_headers = {'Accept' : 'application/json', 'Content-Type': 'application/json', 'x-amzn-type-version': 'com.amazon.device.messaging.ADMMessage@1.0', 'x-amzn-accept-type': 'com.amazon.device.messaging.ADMSendResult@1.0'}
a3l_prefix = "a3l.notification."
def transformAndroidNotifcationToA3LNotification(notification):
a3l_notification = {"data":{}}
for notification_key, notification_value in notification.items():
a3l_notification["data"][ a3l_prefix + notification_key] = notification_value
return a3l_notification
def getAccessToken():
r = requests.post(Auth_token_URL, data = auth_token_data, headers = auth_token_headers)
json_response = r.json()
auth_token = json_response["access_token"]
return auth_token
def sendMessage():
auth_token = "Bearer " + getAccessToken()
send_message_url = send_message_url_part + deviceId + "/messages"
send_message_headers['Authorization'] = auth_token
send_message_data = transformAndroidNotifcationToA3LNotification(notification)
r = requests.post(send_message_url, data = json.dumps(send_message_data), headers = send_message_headers)
print('成功发送消息:',r.json())
sendMessage()
已复制到剪贴板。
FCMWebServer.py
import firebase_admin
from firebase_admin import credentials
from firebase_admin import messaging
# 更新这些值以发送推送通知
# 这是Admin SDK JSON文件,其中包含
# 您的Firebase服务器凭证
admin_sdk_json_file = "Admin SDK JSON文件的路径"
# 要向其发送通知的设备ID
registration_token = ""
########### 请勿更改此行下方的任何代码 ##################
cred = credentials.Certificate(admin_sdk_json_file)
firebase_admin.initialize_app(cred)
def send_to_token():
message = messaging.Message(
notification=messaging.Notification(
title='A3L通知',
body='A3L通知在Android平台上正常运行!',
),
token = registration_token
)
response = messaging.send(message)
print('成功发送消息:', response)
send_to_token()
使用特定于解决方案的API测试
FCM和ADM都提供了可用于向设备发送消息的API。有关如何通过这些API发送消息的详细说明,请参考以下指南。
A3L Messaging通知键
A3L Messaging通知键与Android通知键类似。所有A3L Messaging通知键都会在基本字段名之前附加前缀"a3l.notification."。此前缀有助于避免与具有相似字段名的Android通知键发生冲突。
A3L Messaging通知字段的行为与对应Android通知字段相同。字段的数据类型和功能相同。下表列出了A3L Messaging通知字段和对应Android通知字段的完整列表。
A3L Messaging通知字段 |
Android通知字段 |
a3l.notification.title |
title |
a3l.notification.body |
body |
a3l.notification.image |
image |
a3l.notification.icon |
icon |
a3l.notification.color |
color |
a3l.notification.sound |
sound |
a3l.notification.tag |
tag |
a3l.notification.click_action |
click_action |
a3l.notification.channel_id |
channel_id |
a3l.notification.sticky |
sticky |
a3l.notification.event_time |
event_time |
a3l.notification.local_only |
local_only |
a3l.notification.notification_priority |
notification_priority |
a3l.notification.default_sound |
default_sound |
a3l.notification.visibility |
visibility |
a3l.notification.notification_count |
notification_count |
故障排除
如果在使用模拟器设备时,A3L崩溃,并出现No Valid Platform Found(未找到有效平台)错误,则模拟器可能未安装Google Play服务。在此情况下,可能需要先设置Google Play服务,然后才能在这些设备上进行测试。