Симбиоз человека и телефона Денис Мингулов 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-сервер по-настоящему изменяет ее. |