Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #68, АВГУСТ 2004 г.

Симбиоз человека и телефона

Денис Мингулов

Xakep, номер #068, стр. 068-102-4


DeleteEntryL(msvEntry);

iPhase = EWaitingForDeleted;

// Теперь данные, полученные из сообщения, можно использовать

iObserver.HandleReceivedMessage(text);

}

UID - уникальный идентификатор

UID - это глобальный универсальный идентификатор, представляющий собой 32-х битное число. UID прописывается вторым параметром в файле проекта MMP (первый менять не надо, это 0x100039CE - идентификатор GUI-приложения), AIF-файле (параметр app_uid), а также должен возвращаться функцией AppDllUid в основном классе твоей программы. Во всех этих местах UID должен быть одинаковым.

В Symbian OS у любой программы или DLL есть UID, по которому однозначно можно ее узнать, никакая другая программа не должна иметь такой же UID. Если ты кодишь только для себя и друзей, используй любой случайный, но вот программа, которая будет выпущена в люди, должна иметь UID, полученный в Symbian.

www.symbian.com/developer/techlib/papers/tn_uid/uidinfo.html - здесь ты можешь прочитать о том, как получить UID.

Если читать лень, просто напиши письмо на английском языке на адрес uid@symbiandevnet.com с темой письма «UID Request» и следующим текстом:

Please send me 10 UIDs.

Author name: [настоящее имя]

EMail: [емайл]

Можно запросить максимум 10 UIDов, можно и всего один - смотри сам, сколько тебе необходимо. Если что, можно запросить еще. Высылаются они быстро, в течение пары суток.

Особенности примера SMS

Рассмотрим основные отличия Nokia SMS Example от элементарного HelloWorld.

В файл .MMP добавлены следующие библиотеки:

LIBRARY msgs.lib // для MmsvSessionObserver

LIBRARY muiu.lib // для CommandAbsorbingControl

LIBRARY smcm.lib // для TSmsMtmCommand

LIBRARY gsmu.lib // для Service Center address

А в списке подключаемых заголовков (оставлены только нужные нам):

#include >msvapi.h< // для MMsvSessionObserver

#include >msvids.h<

#include >mtclreg.h<

#include >mtclbase.h<

Класс AppUi приложения, кроме CEikAppUi, также наследует от MMsvSessionObserver. И появляются следующие члены класса:

TMsvId iMsvId; // идентификатор сервера сообщений

CMsvSession* iSession; // клиентская сессия к серверу сообщений

CBaseMtm* iMtm; // Message Type Module (sms)

CClientMtmRegistry* iMtmReg; // Mtm registry клиент для создания новых SMS’ок - это не нужно

В ConstructL() создается сессия с сервером сообщений iSession = CMsvSession::OpenAsyncL(*this); мы берем на себя HandleSessionEventL (TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* /*aArg3*/) - здесь и происходит начальная обработка. Так, после соединения с сервером вызывается CompleteConstructL(), где мы можем производить дополнительную инициализацию.

В случае получения новой sms’ки мы делаем ее невидимой (чтобы пользователь или другая программа не успели обратить на нее внимание), проверяем ее на то, пришло нам уведомление или нет (MessageReceivedL (entries-<At(i))), а затем либо помечаем как прочитанную, либо восстанавливаем ее видимость для других приложений. Затем все изменения подтверждаются (entry-<ChangeL (msvEntry)), и sms-сервер по-настоящему изменяет ее.

Назад на стр. 068-102-3  Содержание  Вперед на стр. 068-102-5