C2DM - роль отправителя аккаунта - PullRequest
1 голос
/ 06 февраля 2012

один простой вопрос, а один сложнее:

1) может ли идентификатор отправителя (учетная запись Gmail) отличаться от того, который нам нужно добавить в телефон в разделе Настройки -> Учетная запись?

2) Я должен автоматически добавить учетную запись (кодирую ..), и я пытаюсь ее решить, но возможно ли скрыть почту учетной записи, которую я хочу добавить, в меню «Настройки» -> «Учетная запись»?Я не хочу, чтобы люди знали адрес электронной почты.

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Учетная запись GMail на телефоне используется для идентификации получателя сообщения C2DM.Сначала клиент регистрирует себя, затем (когда отправляется сообщение C2DM) все зарегистрированные клиенты получают сообщение C2DM.Более одного клиента могут зарегистрировать себя в качестве получателя сообщения C2DM.

С сайта Google C2DM (см. Регистрация ):

Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0));
registrationIntent.putExtra("sender", emailOfSender);
startService(registrationIntent);

Параметр app определяетимя пакета, используемое процессом регистрации, вместе с идентификатором отправителя (в коде над var emailOfSender).Вы видите, что учетная запись GMail на устройстве не используется в коде, но будет использоваться внутренне для идентификации мобильного устройства на сервере C2DM (либо реализация Android напрямую предоставляет учетную запись GMail на стороне клиента, либо идентификатор, связанный с учетной записью GMail).).

Google говорит: Требуются устройства под управлением Android 2.2 или выше, на которых также установлено приложение Market. Это связано с тем, что приложение Market поддерживает соединение с сервером C2DM.Идентификатор регистрации различен для всех устройств.Перед отправкой сообщений C2DM с вашего сервера клиент должен сообщить серверу регистрационный идентификатор.

Если вы хотите создать приложение для отправки сообщений C2DM (на стороне сервера), вам также необходима учетная запись GMail (SenderID, который мы использовали на устройстве).Обычно используется шаблон «одна учетная запись GMail на приложение».Когда вы регистрируетесь для C2DM, вы должны ввести SenderID и пространство имен принимающего приложения Android в форму регистрации - в точности та же информация, которая использовалась на клиенте для регистрации устройства.

Обе учетные записи GMail не являются открытыми,Это отношение n-1-m, что означает, что n клиентов и m сервер регистрируют себя на одном сервере C2DM.Только Google (сервер C2DM) знает, какие учетные записи GMail используются.

У меня есть один реальный адрес GMail, который используется на моем мобильном телефоне.Я имею на отладке адрес GMail, который я использую на моем эмуляторе.Затем у меня есть 3 учетных записи GMail для каждого приложения, поддерживающего C2DM, которое я написал.

0 голосов
/ 20 июня 2012

Извините, если мой вопрос немного (или даже много) глуп, но, как я понял:

registrationIntent.putExtra("sender", emailOfSender);

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

Я повторял учебник из http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html и заметил:

// Sender currently not used
intent.putExtra("sender", "nonsenses@gmail.com");

Итак, я оставил это так, после того, как он разрабатывал тестовую часть сервера, я добавил:

public class SecureStorage {
    public static final String USER = "your_registeredUser";
    public static final String PASSWORD = "your_password";
}

реальные учетные данные здесь, и когда я пытался отправить сообщение приложению Iполучил ответ 200, но не получил сообщений на устройстве, как только я изменил nonsenses@gmail.com на учетную запись электронной почты, используемую в приложении на стороне сервера - я сразу получил уведомление.

...