Проблема с адресом электронной почты Android c2dm - PullRequest
0 голосов
/ 18 июля 2011

Я занимаюсь разработкой приложения push-уведомлений для Android с использованием C2DM, в моем приложении возникли некоторые проблемы.Приложение работает, когда я использую один и тот же адрес электронной почты на серверных и клиентских приложениях,

Может кто-нибудь сказать мне, в чем будет проблема.

Altaf

1 Ответ

1 голос
/ 19 июля 2011

Создается впечатление, что у вас сложилось неправильное впечатление, что учетная запись электронной почты роли, созданная для идентификации приложения, использующего службу C2DM, должна быть изменена в намерении регистрации.

У вас должна быть та же самая электронная почта ролив противном случае Google не сможет идентифицировать ваше приложение как отправителя / получателя этого сообщения c2dm.Пример регистрационного намерения:

    Intent registrationIntent = new Intent(
            C2DMessaging.REQUEST_REGISTRATION_INTENT);
    registrationIntent.setPackage(C2DMessaging.GSF_PACKAGE);
    registrationIntent.putExtra(
            C2DMessaging.EXTRA_APPLICATION_PENDING_INTENT,
            PendingIntent.getBroadcast(context, 0, new Intent(), 0));
    registrationIntent.putExtra(C2DMessaging.EXTRA_SENDER, senderId);
    context.startService(registrationIntent);

Переменная senderId здесь должна содержать учетную запись роли, которую вы создали и зарегистрировали для C2DM на странице регистрации google C2DM

Этот же адрес электронной почтыиспользуется для получения токена аутентификации с серверов Google, который используется для последующей отправки сообщений C2DM

Пример кода сервера для получения ключа аутентификации:

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
        nameValuePairs.add(new BasicNameValuePair("Email",
                senderId));
        nameValuePairs.add(new BasicNameValuePair("Passwd", "testpassword"));
        nameValuePairs.add(new BasicNameValuePair("accountType", "GOOGLE"));
        nameValuePairs.add(new BasicNameValuePair("source",
                "Fleet Tracker Pro"));
        nameValuePairs.add(new BasicNameValuePair("service", "ac2dm"));
        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = client.execute(post);
        BufferedReader rd = new BufferedReader(new InputStreamReader(
                response.getEntity().getContent()));

        String line = "";
        while ((line = rd.readLine()) != null) {
            if (line.startsWith("Auth=")) {
                String auth = line.substring(5);
                System.out.println("Auth token = " + auth);
                return auth;
            }
        }

обратите внимание на переменную senderId, которая также должна хранитьсяучетная запись роли, которую вы создали и зарегистрировали для C2DM на странице регистрации google C2DM , любой другой адрес электронной почты может быть изменен на любой другой, который вам нравится, но этот адрес электронной почты должен оставаться идентичным

здесьопределение со страницы Google C2DM в коде Google:

Идентификатор отправителя Учетная запись электронной почты, связанная с разработчиком приложения.Идентификатор отправителя используется в процессе регистрации для идентификации приложения Android, которому разрешено отправлять сообщения на устройство.Этот идентификатор, как правило, основан на ролях, а не является личным аккаунтом - например, my-app@gmail.com.

Надеюсь, я помог провести хороший день.

было бы неплохо, если бы вы включили фрагменты кода или дополнительную информацию об электронных письмах, о которых вы говорите.

...