Как я могу отправить разные SMS 'нескольким получателям в цикле - PullRequest
0 голосов
/ 02 июня 2011

Я использую Symbian C ++ для создания своего кода, я использую S60 5th Ed SDK

Я хочу знать, как отправлять разные сообщения - их основной текст не одинаков - нескольким получателям вfor-loop?

Я пробовал приведенный ниже пример, но когда я пытаюсь использовать его в цикле, происходит сбой из-за свойств ActiveObjects, так как я должен дождаться завершения работы AO, прежде чем вызывать его снова.

Sending_SMS_in_S60_3rd_Edition_MTM

Ниже приведен пример того, что мне нужно сделать:

SendSMSL();     // **I call this function once to start the process**

// **iRecepients is a CDesCArray contains phone numbers**
// ** iSMSBody is a CDesCArray contains each contact SMS body text**

void CSMS::SendSMSL()
  {

  if(iRecepients->Count() >= 1) 
    {
        TInt x = iRecepients->Count()-1;
        TInt y = iSMSBody->Count()-1; 

        // **If the sms validating and scheduling succeeded then delete last item from both arrays**
        if(iSMSHandler->SendL((*iRecepients)[x],(*iSMSBody)[y])
            {
                iRecepients->Delete(x);
                iSMSBody->Delete(y);    
            }
    }
 }

Теперь в коде выше я вызываю iSMSHandler-> SendL ()которые отправляют смс с помощью AO, и в iSMSHandler объект RunL () функция, я вызываю функцию выше CSMS :: SendSMSL () , которая в свою очередь проверяетесли все еще есть элементы iRecepients, а затем снова вызовите iSMSHandler-> SendL () AO, и сохраните этот путь, пока iRecepients больше не будет.

Будем рады услышать ваши отзывы о вышеуказанной модификации.

Заранее большое спасибо.

1 Ответ

1 голос
/ 17 июня 2011

Ссылка, которую вы разместили, не работает для меня, поэтому я не вижу остальной код.

Предполагая, что iSmsHandler является классом, который использует активные объекты для отправки SMS-сообщений, я вижу несколько проблем с вашим циклом.

1) Вам нужно дождаться завершения первого асинхронного SendL, прежде чемможет выдать следующий SendL 2) Переменная buf не может выйти из области действия, пока SendL не завершится.(Это может быть причиной вашего сбоя)

Я предлагаю вам оставить текстовый буфер где-нибудь еще, например, вместе с iSmsHandler, а затем кодировать активный объект, который вызывается, когда SendL завершает работу, для выдачи следующего SendL.

Все это предположения, так как я понятия не имею, что такое класс iSmsHandler ....

...