从 raix:push 向 0 个 ios 应用程序 0 个 android 应用程序发送消息

Posted

技术标签:

【中文标题】从 raix:push 向 0 个 ios 应用程序 0 个 android 应用程序发送消息【英文标题】:Sent message to 0 ios apps 0 android apps from raix:push 【发布时间】:2016-03-09 19:51:03 【问题描述】:

我正在开发一个使用 raix:push 包来维护推送通知的 Meteor+Cordova 应用程序。我有一个非常简单的配置,它只针对 APNS 和开发模式,看起来像这样:


  "apn-dev": 
    "passphrase": "qwe[]\\qwe[]\\",
    "key": "PushChatKey.pem",
    "cert": "PushChatCert.pem"
  ,
  "apn": ,
  "gcm": ,
  "production": false,
  "badge": true,
  "sound": true,
  "alert": true,
  "vibrate": true

它是指正确放置在 private/ 文件夹中的文件 PushChatKey.pem 和 PushChatCert.pem。密码正确。

我使用一个简单的服务器端发送推送通知:

Meteor.methods(
  sendPushNotification: function (userId = this.userId, title = 'Hello', text = 'and welcome!' = ) 
    Push.send(
      title,
      text,
      from: 'push',
      badge: 14,
      query: 
        userId
      
    );
  
);

问题是,即使证书很好并且配置正确,方法调用

Meteor.call('sendPushNotification', , (error, response) => console.log(error, response))

什么都不做。它返回undefined,并且errorresponse 都是未定义的(如预期的那样)。甚至对 notification 集合进行了一些简短的操作,我相信在发送了适当的推送通知之后,一个项目出现然后消失。

问题是,移动设备上的应用实例永远不会收到任何这些通知。这可能是有原因的。在服务器端的日志中,有消息

Settings userId "J5baP7xvbuTTX4KTk" for app: mytSJW2xrbKWRuGBZ
Send message "Hello" via query 
Sent message "Hello" to 0 ios apps 0 android apps

所以我的问题是,我做错了什么?我是否在配置或服务器端或客户端代码中遗漏了某些内容(我没有任何后者可以引用推送通知)?有没有人遇到同样的路障?解决方案是什么?

【问题讨论】:

【参考方案1】:

首先,我使用了错误的证书和密钥,这直接是混淆了问答和教程的结果。我应该使用从 Apple Developer 仪表板下载的证书导出的证书和私钥,该证书是为响应我的证书请求而生成的。我使用了正确的证书,但使用了错误的私钥。选择正确的私钥后,一切都很好,除了一件事。

出于某种原因(我仍然没有弄清楚为什么),该应用程序仅在第二次或第三次启动后才收到来自 Apple 的 APN 令牌,即不是在用户确认收到推送通知之后,而是有一些延迟。并且在应用再次启动之前,Push.appCollection 集合不会收到相应条目的更新。

不仅如此,即使是代表移动设备上的应用程序的Push.appCollection 集合项也会出现一些延迟。但如果证书是有效的,它会,保证。

【讨论】:

以上是关于从 raix:push 向 0 个 ios 应用程序 0 个 android 应用程序发送消息的主要内容,如果未能解决你的问题,请参考以下文章

Meteor raix:push:通知设置中只有“徽章”而不是“徽章、声音、横幅”

APN、GCM(FCM):如何在通知中添加富媒体?

我的 android 通知图标是一个白色方块

iOS 7 在右侧添加了滑动以将视图控制器从堆栈中弹出。是不是可以通过向左滑动将其添加回来?

从 App Store 和 google Play Store 禁用 iOS 和 Android 应用程序,并向用户发送自定义消息

无法从ViewModel向用户显示协程错误消息