Jumping Jack Flash weblog

Appunti di gestione SMS in Symbian c++

Posted in Symbian by jumpjack on 22 gennaio 2007

ESEMPI? http://developer.symbian.com/main/oslibrary/osdocs/symbian70/index.jsp
Modificare messaggi già arrivati: http://symbianexample.com/preprocessing_the_incoming_message

Creare un nuovo MMS:
// Create message server session
iMsvSession = CMsvSession::OpenSyncL(*this);
// Create client registry object
iClientMtmRegistry = CClientMtmRegistry::NewL(*iMsvSession);
// Request MMS client MTM object
iMmsClientMtm = (CMmsClientMtm*)iClientMtmRegistry->NewMtmL(KUidMsgTypeMMS);

Accesso agli SMS – inizializzazione:
CMsvSession* iSession = CMsvSession::OpenSyncL(*this);
CClientMtmRegistry* iMtmReg = CClientMtmRegistry::NewL(*iSession);
CSmsClientMtm* iSmsMtm = static_cast(iMtmReg->NewMtmL(KUidMsgTypeSMS));

La funzione SendingState di TMsvEntry mostra lo stato di un mex (in TMsvSendState )
La funzione SetSendingState di TMsvEntry imposta lo stato di un mex; forse va poi seguita da CMsvEntry::ChangeL() o da CMsvEntry:CHangeEntryL();
Il tipo TSmsDelivery forse imposta il default-state dei messaggi nuovi.
La funzione CSmsSettings.SetDelivery() imposta i parametri di default di un SMS secondo i valori TSmsDelivery (Send immediately, send on client request, send at scheduled time )
La funzione CSmsSettings.Delivery() mostra quanto sopra.

I messaggi sono memorizzati nel file INDEX (le loro proprietà) e nel “message store” (contenuto vero e proprio). Un elemento del “message store” è rappresentato dall’oggetto CMsvStore . Un elemento dell’ INDEX è rappresentato dall’oggetto TMsvEntry .

E’ possibile creare sotto-folder nei folder dei messaggi! » Developer Library » Symbian OS Guide » C++ API guide » Messaging » Using Messaging » The Message Server » Message folders

Un messaggio può essere creato senza per questo richiamare l’editor mesaggi “ufficiale”.

E’ il sistema a gestire i messaggi in arrivo, non il programma Messaggi. Quindi forse si puo’ scrivere semplicemente un programma esterno che legge i mex e li riorganizza in cartelle e sottocartelle, mentre per spedirli si puo’ usare il programma standard. Ma comunque mandarli dovrebbe essere molto semplice, tramite la classe CSendAs e MSendAsObserver .

User Interface MTM (CBaseMtmUi): Per vedere e modificare messaggi
Client-side MTM (CBaseMtm): interfaccia tra rappresentazione interna e rappresentazione “all’utente”

classe CSmsMessageSettings – Impostazioni relative a SINGOLO messaggio.

CSmsSettings – Impostazioni GLOBALI:
SetDelivery() imposta TSmsDelivery a ESmsDeliveryImmediately, ESmsDeliveryUponRequest o ESmsDeliveryScheduled .

Struttura:
C’e’ un INDEX globale che conteiene messaggi e folder: ognuno è un CMsvEntry; ogni Entry ha vari campi: ID è univioco per ogni entry; Type definisce se è un folder, un messaggio, un servizio o un attachment)
Proprietà di un entry: » Developer Library » API Reference » C++ API reference » SMS Client MTM » TMsvEntry functions and members used in SMS message entries

———–
Contare tutti i messaggi non letti:

CMsvEntry* entry = CMsvEntry::NewL(*iMsvSession, KMsvGlobalInBoxIndexEntryId, TMsvSelectionOrdering());
CleanupStack::PushL(entry);
CMsvEntrySelection* entries = entry->ChildrenL();
CleanupStack::PushL(entries);
TInt nCount;
for(TInt i=0; i Count(); i++)
{
entry->SetEntryL(entries->At(i));
TMsvEntry msvEntry(entry->Entry());
nCount++ = msvEntry.Unread()? 1:0;
}
CleanupStack::PopAndDestroy(2);

OPPURE:
#include msvstd.h // msgs.lib
#include msvapi.h //msgs.lib
#include mtclreg.h // msgs.lib
#include SMSCLNT.h //smcm.lib

CMsvSession* iSession = CMsvSession::OpenSyncL(*this); //#include msvapi.h //msgs.lib
CClientMtmRegistry* iMtmReg = CClientMtmRegistry::NewL(*iSession); //#include mtclreg.h // msgs.lib
CSmsClientMtm* iSmsMtm = static_cast(iMtmReg->NewMtmL(KUidMsgTypeSMS)); //#include SMSCLNT.h //smcm.lib

TMsvEntry msvEntry; //#include msvstd.h // msgs.lib
CSmsClientMtm* smsMtm = pView->pMsgHandler->iSmsMtm; // #include SMSCLNT.h //smcm.lib
CMsvEntrySelection* entries; // #include msvstd.h // msgs.lib
smsMtm->SwitchCurrentEntryL(KMsvGlobalInBoxIndexEntryId);
entries = smsMtm->Entry().ChildrenWithMtmL(KUidMsgTypeSMS);
CleanupStack::PushL(entries);
numMessages = entries->Count();
while(count > 0 )
{
current = (*entries)[–count];
smsMtm->SwitchCurrentEntryL(current);
smsMtm->Entry().Entry().
iSession->GetEntry(current,serviceid, msvEntry);
if (msvEntry.Unread() )
{
// DO SOMETHING
}
}

————-
Scheduling di un messaggio:
Then, to schedule a message you should, in TMsvEntry, set the following:
SetScheduled(ETrue);
SetSendingState(KMsvSendStateScheduled);

Then set the iDate to the date & time you want the message to send out;

————–
Leggere data di un messaggio:

TTime msgTime=msvEntry.iDate;

TDateTime msgDateTime = msgTime.DateTime();

TBuf timeBuf ;

timeBuf.Format(KTimeDateFormat ,msgDateTime.Hour(),msgDateTime.Minute(),msgDateTime.Second(),msgDateTime.Day(),msgDateTime.Month(),msgDateTime.Year());

_LIT (KTimeDateFormat, “%d:%d:%d %d/%d/%d”);

———————————-
http://forum.nokia.com/document/Forum_Nokia_Technical_Library_v1_35/contents/FNTL/Custom-created_message_left_in_Outbox.htm

Custom-created message left in Outbox
KIS000308

Overview
A custom-created message is left in Outbox with status “waiting.”

Reported against S60 3rd Edition

Date identified December 22, 2005

Symptoms

Detailed description

This is a known issue that impacts all custom messaging applications, in other words, applications that create and send messages using the functions of CMsvEntry, TMsvEntry, and a client MTM.

This issue can be reproduced by creating and scheduling a message to be sent immediately. The message may be left in the Outbox with the status “waiting” for a period of time specified by the iDate member of your message entry’s TMsvEntry object.

How to reproduce

Solution

The solution to this problem is to set your TMsvEntry’s iDate to the Universal Time (by calling iDate.UniversalTime()). The messaging server will calculate the difference between the local time and the (universal) time stamp of the message entry and schedule the entry accordingly.

Una Risposta

Subscribe to comments with RSS.

  1. […] Appunti di gestione SMS in Symbian c++ […]


Puoi inserire un commento qui sotto; diventerà visibile dopo la moderazione dell'amministratore

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: