106 lines
3.5 KiB
Python
106 lines
3.5 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
"""
|
|||
|
|
测试 Honor 推送脚本
|
|||
|
|
"""
|
|||
|
|
import json
|
|||
|
|
import requests
|
|||
|
|
import time
|
|||
|
|
|
|||
|
|
# 推送服务地址
|
|||
|
|
PUSH_SERVER_URL = "http://localhost:8080/android/push"
|
|||
|
|
|
|||
|
|
# 用户提供的 token
|
|||
|
|
DEVICE_TOKEN = "BAEAAAAAB.josybFY8YYNOK7suCSammWuFIaIUgCdo1d5Ud2NBTUWnyy2a8yUG2WpwNiTZFgBW3sRPO_q-a1bWjwu_ODI6HWHHszoUi1HbhlhMaxjHmOs-zxfg--SECc"
|
|||
|
|
|
|||
|
|
# Honor 推送类型(注意:实际运行的推送服务版本中使用的是 8,不是 9)
|
|||
|
|
ANDROID_PUSH_TYPE_HONOR = 8
|
|||
|
|
|
|||
|
|
# 普通消息类型
|
|||
|
|
PUSH_MESSAGE_TYPE_NORMAL = 0
|
|||
|
|
|
|||
|
|
def send_honor_push(title="测试消息", content="这是一条测试推送消息", sender="test_user", target="honor_device"):
|
|||
|
|
"""
|
|||
|
|
发送 Honor 推送消息
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
title: 推送标题
|
|||
|
|
content: 推送内容
|
|||
|
|
sender: 发送者ID
|
|||
|
|
target: 接收者ID
|
|||
|
|
"""
|
|||
|
|
# 构建推送消息
|
|||
|
|
push_message = {
|
|||
|
|
"sender": sender,
|
|||
|
|
"senderName": "测试用户",
|
|||
|
|
"senderPortrait": "",
|
|||
|
|
"convType": 0, # 0: 单聊, 1: 群聊, 3: 聊天室
|
|||
|
|
"target": target,
|
|||
|
|
"targetName": "Honor设备",
|
|||
|
|
"targetPortrait": "",
|
|||
|
|
"userId": target,
|
|||
|
|
"line": 0,
|
|||
|
|
"cntType": 1, # 消息内容类型
|
|||
|
|
"serverTime": int(time.time() * 1000), # 服务器时间(毫秒)
|
|||
|
|
"pushMessageType": PUSH_MESSAGE_TYPE_NORMAL, # 0: 普通消息
|
|||
|
|
"pushType": ANDROID_PUSH_TYPE_HONOR, # 9: Honor推送
|
|||
|
|
"pushContent": content, # 推送内容
|
|||
|
|
"pushData": "", # 推送数据(可选)
|
|||
|
|
"unReceivedMsg": 1, # 未接收消息数
|
|||
|
|
"mentionedType": 0, # 0: 无@提醒, 1: @了当前用户, 2: @了所有人
|
|||
|
|
"packageName": "com.xunpaisoft.social.im", # 应用包名(根据配置文件中的badgeClass推断)
|
|||
|
|
"deviceToken": DEVICE_TOKEN, # 设备token
|
|||
|
|
"voipDeviceToken": "",
|
|||
|
|
"isHiddenDetail": False, # 是否隐藏详情
|
|||
|
|
"language": "zh_CN", # 语言
|
|||
|
|
"messageId": 0,
|
|||
|
|
"callStartUid": 0,
|
|||
|
|
"republish": False,
|
|||
|
|
"existBadgeNumber": 0
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
print("=" * 60)
|
|||
|
|
print("发送 Honor 推送消息")
|
|||
|
|
print("=" * 60)
|
|||
|
|
print(f"推送服务地址: {PUSH_SERVER_URL}")
|
|||
|
|
print(f"设备Token: {DEVICE_TOKEN[:50]}...")
|
|||
|
|
print(f"推送标题: {title}")
|
|||
|
|
print(f"推送内容: {content}")
|
|||
|
|
print("=" * 60)
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
# 发送 POST 请求
|
|||
|
|
response = requests.post(
|
|||
|
|
PUSH_SERVER_URL,
|
|||
|
|
json=push_message,
|
|||
|
|
headers={"Content-Type": "application/json;charset=UTF-8"},
|
|||
|
|
timeout=10
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
print(f"\n响应状态码: {response.status_code}")
|
|||
|
|
print(f"响应内容: {response.text}")
|
|||
|
|
|
|||
|
|
if response.status_code == 200:
|
|||
|
|
print("\n✓ 推送请求发送成功!")
|
|||
|
|
print("请检查手机是否收到推送通知。")
|
|||
|
|
else:
|
|||
|
|
print(f"\n✗ 推送请求失败,状态码: {response.status_code}")
|
|||
|
|
|
|||
|
|
except requests.exceptions.ConnectionError:
|
|||
|
|
print("\n✗ 无法连接到推送服务!")
|
|||
|
|
print("请确保推送服务正在运行在 http://localhost:8080")
|
|||
|
|
except requests.exceptions.Timeout:
|
|||
|
|
print("\n✗ 请求超时!")
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"\n✗ 发生错误: {str(e)}")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
# 发送测试推送
|
|||
|
|
send_honor_push(
|
|||
|
|
title="测试推送",
|
|||
|
|
content="这是一条来自推送服务的测试消息,如果您收到此消息,说明推送配置成功!",
|
|||
|
|
sender="test_sender_001",
|
|||
|
|
target="honor_device_001"
|
|||
|
|
)
|
|||
|
|
|