Qualcuno conosce qualche buon esempio su come configurare un client pjsip per ricevere messaggi. posso inviare messaggi dal client utilizzando:pjsip receive sms
pjsua_im_send(sip_acc_id, &to, NULL, &msgbody, NULL, NULL);
a qualsiasi numero.
Ma non ho idea di cosa fare per ricevere messaggi nell'account sip già registrato.
Qualsiasi informazione sarebbe molto apprezzata.
Nota: Posso utilizzare solo pjsip e nessun'altra libreria.
Edit: alcune cose nuove che ho trovato:
http://trac.pjsip.org/repos/ticket/1070
http://www.pjsip.org/release/0.5.4/PJSIP-Dev-Guide.pdf (comunque tutto questo documento dice di msg in entrata è questo:
16.1.2 Ricezione MESSAGGIO
Le richieste di MESSAGGIO in arrivo all'esterno di qualsiasi finestra di dialogo verranno ricevute dall'applicazione modulo. Le richieste di MESSAGGIO in entrata all'interno di una finestra di dialogo verranno notificate all'utilizzo della finestra di dialogo tramite on_tsx_state() richiamata della finestra di dialogo.
che ancora non illumina molto su come gestire i messaggi in arrivo.
http://www.ietf.org/rfc/rfc3261.txt
http://trac.pjsip.org/repos/wiki/SIP_Message_Buffer_Event
Edit2: Mi è stato detto che on_pager funzione deve essere utilizzato per questa funzionalità. Così ho provato, ma purtroppo non ho avuto successo.
Ecco quello che ho fatto:
/* Initialize application callbacks */
app_config->cfg.cb.on_call_state = &on_call_state;
app_config->cfg.cb.on_call_media_state = &on_call_media_state;
app_config->cfg.cb.on_incoming_call = &on_incoming_call;
app_config->cfg.cb.on_reg_state = &on_reg_state;
app_config->cfg.cb.on_pager = &on_pager;
e l'implementazione on_pager:
static void on_pager(pjsua_call_id call_id, const pj_str_t *from, const pj_str_t *to, const pj_str_t *contact, const pj_str_t *mime_type, const pj_str_t *body) {
NSLog(@"**************** on_pager called **********************");
AppDelegate *app = (AppDelegate *)[AppDelegate sharedApplication];
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
PJ_UNUSED_ARG(call_id);
PJ_UNUSED_ARG(to);
PJ_UNUSED_ARG(contact);
PJ_UNUSED_ARG(mime_type);
[app ring];
//PJ_LOG(3,(THIS_FILE, "MESSAGE from %.*s: %.*s (%.*s)", (int)from->slen, from->ptr, (int)text->slen, text->ptr, (int)mime_type->slen, mime_type->ptr));
postMessageStateNotification(call_id, &ci);
}
mi aspettavo all'applicazione di chiamare on_pager quando un messaggio viene ricevuto, ma non fu così. on_incoming_call
tuttavia viene chiamato.