如何注册展会推送通知设备
Posted
技术标签:
【中文标题】如何注册展会推送通知设备【英文标题】:How to register an expo push notification device 【发布时间】:2021-06-24 07:13:12 【问题描述】:我正在试用 Expo 推送通知服务。我通过单击“在零食上尝试这个示例”运行code in the overview,然后将我的 iPad 指向二维码,该二维码将示例加载到 Expo Go 中。当我点击“Press to Send Notification”时,我确实看到了一条通知,一切都很好。
使用打印在 iPad 应用程序上的相同令牌(“您的 expo 推送令牌:ExponentPushToken[token-goes-here]”)我尝试通过在我的 PC 上运行 curl 命令来调用 Expo API 以触发推送使用HTTPS POST
远程通知,同时将应用程序保持在前台:
curl -H "Content-Type: application/json" -X POST "https://exp.host/--/api/v2/push/send" -d '
"to": "ExponentPushToken[token-goes-here]",
"title":"hallo",
"body": "world"
'
但我明白了:
"data":"status":"error","message":"\"ExponentPushToken[token-goes-here]\" is not a registered push notification recipient","details":"error":"DeviceNotRegistered"
查看sendPushNotification(expoPushToken)
的代码,我发现它使用与fetch
相同的API:
// Can use this function below, OR use Expo's Push Notification Tool-> https://expo.io/notifications
async function sendPushNotification(expoPushToken)
const message =
to: expoPushToken,
sound: 'default',
title: 'Original Title',
body: 'And here is the body!',
data: someData: 'goes here' ,
;
await fetch('https://exp.host/--/api/v2/push/send',
method: 'POST',
headers:
Accept: 'application/json',
'Accept-encoding': 'gzip, deflate',
'Content-Type': 'application/json',
,
body: JSON.stringify(message),
);
那么为什么它可以在 iPad 上运行,但在使用完全相同令牌的 PC 上却不行呢?顺便说一句,我仔细检查了令牌并尝试了基于 Web 的 push notifications tool 并收到“这不是有效的 Expo 推送令牌”错误。我错过了一步吗?我还没有进行任何实际的构建,但认为它会起作用。
【问题讨论】:
世博推送令牌长什么样?它应该看起来像 ExponentPushToken[*******************] 我已经使用过 expo 工具和 curl,它对我来说很好用。尝试使用 php 代码发送 CURL 请求。 是的,令牌就是这种格式。我已经离开了一段时间,但只是按照问题中发布的方式在命令行上再次尝试并且它有效,所以我想它一定是 3 个月前世博会方面的临时错误或故障。如果您想将其发布为答案,我很乐意接受。谢谢。 【参考方案1】:问题中显示的方法后来起作用了。相同的curl
命令后来返回了"status":"ok"
,我在移动设备上收到了通知。这可能是世博会方面的临时问题。
如果再次发生这种情况,并且 API 没有更改,建议稍后再试或联系 Expo。
【讨论】:
以上是关于如何注册展会推送通知设备的主要内容,如果未能解决你的问题,请参考以下文章
如何在 aws sns 中注册 iOS 设备令牌以接收推送通知?