Трябва да внедря c2dm в моето приложение. Има ли някой, който също прави това? Моля, помогнете..някои уроци ще бъдат много полезни ИЛИ ако сте завършили внедряването на c2dm, то един урок е повече от оценен.
Моля помогнете.
Трябва да внедря c2dm в моето приложение. Има ли някой, който също прави това? Моля, помогнете..някои уроци ще бъдат много полезни ИЛИ ако сте завършили внедряването на c2dm, то един урок е повече от оценен.
Моля помогнете.
Продължих и изтеглих изходния код на Chrome2Phone за android и разбрах как работи чрез този пример, имах най-много проблеми с внедряването на сървърната страна на приложението.
Изтеглете го от: http://code.google.com/p/chrometophone/source/checkout
или го svn:
svn checkout http://chrometophone.googlecode.com/svn/trunk/ chrometophone-read-only
Основни неща, които трябва да разберете.
В класа C2DMBaseReciever имате:
@Override
public final void onHandleIntent(Intent intent) {
try {
Context context = getApplicationContext();
if (intent.getAction().equals(REGISTRATION_CALLBACK_INTENT)) {
handleRegistration(context, intent);
} else if (intent.getAction().equals(C2DM_INTENT)) {
onMessage(context, intent);
} else if (intent.getAction().equals(C2DM_RETRY)) {
C2DMessaging.register(context, senderId);
}
} finally {
// Release the power lock, so phone can get back to sleep.
// The lock is reference counted by default, so multiple
// messages are ok.
// If the onMessage() needs to spawn a thread or do something else,
// it should use it's own lock.
mWakeLock.release();
}
}
Този метод получава намеренията от услугата C2DM и ги обработва.
В метода handleRegistration ще видите някакъв код, който изглежда така:
} else {
try {
onRegistrered(context, registrationId);
C2DMessaging.setRegistrationId(context, registrationId);
//Add some code here to send your server the registration ID for this phone.
} catch (IOException ex) {
Log.e(TAG, "Registration error " + ex.getMessage());
}
}
След това трябва да използвате услугата за влизане на google oAuth, за да регистрирате сървъра си в услугата, след като това стане, можете да изпратите съобщение. Когато тествах, използвах curl, за да изпращам заявки за http post до сървъра.
За да се регистрирате от сървъра:
curl https://www.google.com/accounts/ClientLogin -d Email=theEmailYouWhitelisted -d Passwd=pass****word -d accountType=HOSTED_OR_GOOGLE -d source=Google-cURL-Example -d service=ac2dm
Ще получите съобщение с идентификатор за удостоверяване. След това го използвате, за да изпратите съобщенията. За да изпратите съобщение, използвайте:
curl --header "Authorization: GoogleLogin auth=**authFromRegistrationAbove**" "https://android.apis.google.com/c2dm/send" -d registration_id=**phoneRegistrationId(reciever)** -d "data.message=StringToPass" -d collapse_key=something -k
Изтеглете curl от: CURL
Надявам се това да помогне.
Error=BadAuthentication
. Странно.
- person Thomas Ahle; 24.03.2011
exec("curl --header \"Authorization: GoogleLogin auth=".$auth."\" \"https://android.apis.google.com/c2dm/send\" -d registration_id=".$id." -d \"data.message=".$mensaje."\" -d collapse_key=something -k");
- person blindstuff; 24.03.2011
урок за c2dm клиент/сървър регистрация и изпращане/получаване на съобщения.
http://android.arnodenhond.com/tutorials/cloud-to-device-messaging