Как использовать Notificationconf? - PullRequest
4 голосов
/ 24 января 2010

Я прочитал ЭТОТ учебник по созданию Push-узлов и публикации / подписке на уведомления. Единственная проблема, с которой я столкнулся, это то, что notificationconf не может создать этот узел ...

Мой первый вопрос: одно и то же: nodename (параметр notificationconf tool) и 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)

Что я делаю не так? И отправка уведомления из приложения ничего не делает ...

Спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 25 января 2013

Я пытался использовать службу push-уведомлений Snow Leopard Server с пользовательским приложением, основанным на публикации и подписке XMPP. Я изо всех сил пытался создать узел, но наконец понял это.

  1. Отслеживание пароля для учетной записи службы com.apple.notificationuser. Вы можете найти его, например, в /private/etc/dovecot/notify/notify.plist.

  2. Подключитесь к серверу push-уведомлений с помощью 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, но не тот, который требует спецификация. Он отправляет совместимую ошибку, если узел уже существует.

    <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 работать.

1 голос
/ 03 марта 2010

Уведомления просты в использовании на одном узле, но сложнее в сети. Особенно, я не думаю, что на самом деле слишком много людей используют его, так как результаты поиска Google скудны :) Теперь по вашим вопросам:

Для 1: да, вы должны иметь соответствующие nodename и notificationName. На странице руководства написано так (хотя и не кристально ясно):

 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).

...