【问题标题】:How to use notificationconf?如何使用通知配置?
【发布时间】:2010-01-24 10:40:51
【问题描述】:

我已阅读 THIS 关于创建推送节点和发布/订阅通知的教程。 我遇到的唯一问题是 notificationconf 似乎无法创建该节点...

我的第一个问题:nodename(notificationconf 工具的参数)和notificationName(我在应用程序中使用的NSString)是同一个东西吗?

第二个:

notificationconf createnode push.example.com BFMyTestPushhNotification beefon
Enter password: // password from Open Directory for user beefon - it is Admin of the 10.6 server
2010-01-24 13:24:58.916 notificationconf[15221:903] created XMPP session
2010-01-24 13:24:58.931 notificationconf[15221:903] Connecting to push.example.com:5222 with user com.apple.notificationuser@push.example.com/TestPubsub, security = 2 ...
2010-01-24 13:24:59.130 notificationconf[15221:903] sessionCallback (event 1)
2010-01-24 13:24:59.130 notificationconf[15221:903] Session stopped (event 1)

我做错了什么? 从应用发布通知什么都不做......

感谢您的帮助!

【问题讨论】:

  • 嗯?你确定这是一个Mac问题吗?听起来您在询问推送通知,这是 iPhone 的事情。
  • 当然是 Mac 的东西。 :-) 他链接的文档也是 Mac 文档库的一部分。此外,“man notificationconf”提供了更多信息。以前没用过,所以不知道答案是什么。

标签: macos cocoa push-notification jabberd2


【解决方案1】:

我一直在尝试将 Snow Leopard Server 的推送通知服务与基于 XMPP Publish-Subscribe 的自定义应用程序一起使用。我努力创建一个节点,但终于弄明白了。

  1. 找到服务帐户com.apple.notificationuser 的密码。例如,您可以在 /private/etc/dovecot/notify/notify.plist 中找到它。

  2. 使用 JID com.apple.notificationuser@your-chat-server-hostname.com 和该密码连接到您的推送通知服务器。

  3. 以正常方式创建节点。在 XMPPFramework 中是这样的:

    XMPPJID *serviceJID =
    [XMPPJID jidWithString:@"pubsub.your-chat-server-hostname.com"];
    XMPPPubSub *xmppPubSub = [[XMPPPubSub alloc] initWithServiceJID:serviceJID];
    [xmppPubSub createNode:@"pubsub.your-chat-server-hostname.com`
               withOptions:nil];
    
  4. 服务器创建节点。它以智商响应,但不是规范要求的智商。如果节点已经存在,它会发送一个兼容错误。

    <iq xmlns="jabber:client"
    to="com.apple.notificationuser@your-chat-server-hostname.com/..."
    from="pubsub.your-chat-server-hostname.com"
    id="...:create_node" type="result"/>
    
  5. 使用同一用户进行连接以发布您的更新。

我一直无法让notificationconf 工作。

【讨论】:

  • 这就像在没有Apple API 的情况下自行使用XMPP 的默认pubsub 机制。感谢您的信息!
  • 是的!不过,我的猜测是,以这种方式创建的节点也可以与 Apple API 一起使用——而且它们的 API 看起来确实很容易使用。
【解决方案2】:

通知在同一个节点上很容易使用,但在整个网络中更难使用。特别是,我认为实际使用它的人并不多,因为 Google 搜索结果很少 :) 现在,关于您的问题:

对于 1: 是的,您需要匹配 nodenamenotificationName。手册页是这么说的(虽然不是很清楚):

 createnode hostname nodename username
         Creates a node on the server to send notifications using.  Before
         a client can subscribe to notifications with a given name, the
         server must be configured with a node with a matching name.

所以,首先您必须创建节点,然后您可以收听给定名称的通知。否则,您不会收到通知。

对于 2: 当没有运行 XMMP 守护程序时(即端口 5222 已关闭),我收到此错误。那个端口对你开放吗? (检查nmap -p 5222 push.example.com的输出)。

【讨论】:

  • 主机启动(0.0071 秒延迟)。\n 端口状态服务\n 5222/tcp 打开未知\n Nmap 完成:在 0.21 秒内扫描了 1 个 IP 地址(1 个主机启动)\n 这是nmap 的输出。让通知工作仍然没有运气。
  • 服务器日志说什么?您还可以监听原始网络流量(使用 tcpdump)并检查发生了什么。
  • 老实说,Google 搜索“notificationconf createnode”(带引号)只会在 Apple 论坛上发现您的问题,这太糟糕了。
  • 好吧,现在 iChat 服务日志说:连接 -> 密码验证失败 -> 断开 jid=unbound,数据包:0。这很奇怪,因为早期的日志只是:连接 -> 断开 jid=unbound,数据包: 0. 无密码错误。 createnode 命令中的用户名是什么?在 setpass 命令中?我想这个用户名必须是服务器管理员的用户名,对吗?
  • 我认为它必须是一个有效的 XMMP 用户,有权创建节点。也许这是为了检查您的 iChat 服务器配置。不幸的是,很难进一步挖掘,因为 1. 文档非常稀缺,并且 2. 它不在操作系统的开源部分中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 2019-12-03
  • 1970-01-01
相关资源
最近更新 更多