Письма в C2DM? - PullRequest
       2

Письма в C2DM?

0 голосов
/ 17 июля 2011

Я разработал систему push-уведомлений в Android с использованием c2dm, она работает нормально, но у меня одна проблема, т.е. она работает нормально только с одним письмом.

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:

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

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

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

...