Реализовать сервер push-уведомлений в php

Это мой первый пост, извините за мой английский

Всем привет. Я новичок в PHP и хотел бы использовать Zend Mobile Framework для реализации своего сервера push-уведомлений.

Я ищу, как реализовать проект tomcat, используемый в

http://developer.android.com/guide/google/gcm/demo.html

но написан на PHP.

В самом ниже коде я написал используемые исходники. Когда я вызываю кнопку отправки, всегда получаю ответ с ошибкой InvalidRegistration.

Кто-нибудь может увидеть, где ошибка?

Большое спасибо

http://pastebin.com/MauzLX71


person Fernando    schedule 08.07.2012    source источник


Ответы (2)


Одна из вещей, которые у вас, вероятно, произошли здесь, заключается в следующем:

  • Your code is actually processing and attempting to send a message prior to your call of sendPush which may be causing part of the issue.
  • Вы подписались на ключ API и заменили эту часть в коде?
  • In the demo client application; it shows how to actually leverage the registration; see my comment on the following GitHub issue: https://github.com/mwillbanks/Zend_Mobile/issues/16
    • Your server needs to have the registration id from the device; this is likely what you do not have.
    • Один из способов получения регистрационного идентификатора — вызов onRegistered внутри клиентского приложения, выполните Log.i("MY_APP_TAG", regId); затем посмотрите на вывод logcat.

Пример Android

public class GCMIntentService extends GCMBaseIntentService {

    public GCMIntentService() {
        super(Constants.SENDER_ID);
    }

    @Override
    protected void onRegistered(Context context, String regId) {
        Log.i("MY_APP_TAG", "Registered: " + regId);
    }

    @Override
    protected void onUnregistered(Context context, String regId) {
        // write a call here to send the regId to your server and unregister it
    }

    @Override
    protected void onMessage(Context context, Intent intent) {
        Log.i("MY_APP_TAG", "Received message!");
        // grabbing data looks like the following; the assumption
        // is title is part of the data string.
        String title = intent.getExtras().getString("title");
    }

}

*Пример Zend_Mobile_Push_Gcm*

См. обновленную ссылку (http://pastebin.com/NhrD5N6i), которую я предоставил для вашего вставленного кода; вы захотите использовать регистрационный идентификатор выше в текстовом поле.

person mwillbanks    schedule 09.07.2012

Согласно обзору архитектуры Android GCM, у вас возникает ошибка недопустимой регистрации, когда:

Неверный идентификатор регистрации Проверьте формат идентификатора регистрации, который вы передаете на сервер. Убедитесь, что он соответствует регистрационному идентификатору, который телефон получает в намерении com.google.android.c2dm.intent.REGISTRATION, и что вы не усекаете его и не добавляете дополнительные символы. Происходит, когда код ошибки InvalidRegistration.

Ознакомьтесь с официальной документацией GCM здесь.

person yugidroid    schedule 08.07.2012
comment
Спасибо, проблема в том, что я не храню идентификатор регистрации. Это необходимо. Я пишу весь код и рефакторинг, когда я этого добьюсь, я опубликую все решение. Спасибо. - person Fernando; 09.07.2012