2009-12-30 32 views
12

Ho un'app che consente agli utenti di inviare messaggi sms. Funziona alla grande quando il messaggio è < 160 caratteri. Dopo ciò, le cose funzionano meno perfettamente. Sembra che ci siano alcune opzioni qui:Invio di messaggi sms lunghi

  1. Rompere manualmente il messaggio in più SMS, inviare ciascuna parte come SMS separato.
  2. Utilizzare la funzione SMS di invio multiparte (sendMultipartTextMessage()).
  3. Invia il messaggio come messaggio MMS (sendDataMessage()?).

Ecco il mio novizio prendere su di esso:

1) più ben supportato attraverso vettori. Gli utenti potrebbero arrabbiarsi per il fatto che ti costano solo N messaggi separati, invece di convertirli in MMS o qualcosa del genere.

2) non so se questo è supportato da diversi vettori, e leggere che una volta che il messaggio è superiore a 3 * 160 caratteri di lunghezza, viene convertito in MMS in ogni caso da diverse app SMS - forse stare lontano da questa del tutto.

3) non è sicuro come fare questo, e telefoni più vecchi potrebbero non supportare MMS. Per inviare un MMS utilizzando l'SDK di Android, utilizziamo semplicemente il metodo SmsManager.sendDataMessage()?

Grazie

+0

Sto facendo qualcosa di simile QUI !!! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

risposta

1

mi sembra che la prima opzione è quello che la maggior parte dei telefoni cellulari fanno per impostazione predefinita. i messaggi sms di design possono solo inviare una certa quantità di caratteri (160 problemi verbali), basta informare l'utente che il messaggio è troppo grande e se vuole comunque inviarlo (informando anche quanti sms sarebbe il totale).

come per MMS e più parti come hai detto non tutti i carrier supporta, in modo che non sembrano essere l'opzione migliore.

EDIT: come per come fa MMS funzionano su android-sdk verificare questa discussione out: Android SDK MMS

+1

Sono d'accordo. Un avviso che informa che il messaggio è troppo lungo e che dovrà essere inviato come n messaggi di testo con un'opzione di accettazione/annullamento sembra la scelta migliore per me. –

+0

Ok ha senso, grazie a tutti. – Mark

+2

In quale paese sei? Sarei sorpreso di sentire i gestori che non supportano i messaggi SMS multipart. Vivo nel Regno Unito e sono passati quasi dieci anni dall'ultima volta che avevo un telefono che non comprendeva SMS multipart. Dubito che molti telefoni normali convertano i messaggi SMS lunghi in un MMS (ad esempio, qui ricevo SMS gratuiti, ma MMS mi costa denaro da inviare). –

32

Questo è piuttosto un vecchio post, ma è alto sulla Google per la ricerca di Android sms più parti, in modo forse aiuta qualcuno .

Per quanto riguarda le parti 1 e 2, è praticamente la stessa cosa. Per utilizzare sendMultipartTextMessage, è necessario suddividere il messaggio lungo in ArrayList of String. Invia quindi tutti gli SMS necessari. In breve:

Parte 3: MMS non è un'opzione, come è stato sottolineato. Le accuse e tutto.

+0

Ho appena provato la soluzione: non funziona, nessun errore nel log, nessun suggerimento? Tks – hungson175

+0

Ah, mi dispiace, ho inserito il numero sbagliato :). La soluzione funziona bene! Tks – hungson175

+0

Alcuni gestori (questo si è verificato con Sprint su CDMA) modificano Android che non riassembla il messaggio! Questo è in realtà un problema che dobbiamo affrontare. E la soluzione non è banale in quanto devo verificare come viene segmentato il messaggio. – allprog

-1

Suggerisco l'utilizzo dell'opzione 2 quando si lavora su telefoni Android basati su Androids. Il dispositivo mobile basato

GSM si prende cura della segmentazione in cui rompere i messaggi da multiparts per l'invio di svolta e anche l'assemblaggio dei messaggi in più per un unico messaggio al ricevimento.

Se si dispone di un metodo che si occupa dell'invio di messaggi di testo, utilizzare per impostazione predefinita le opzioni di manager.divideMessage poiché funzionerà anche se i segmenti di messaggio richiesti sono solo 1 numero.

Non penso che dovresti avere problemi nell'invio di messaggi usando l'opzione 2 e assicurerà anche che il destinatario riceva il messaggio come un singolo messaggio. Altrimenti è necessario scrivere il proprio stack di protocolli in cui scrivere il numero di riferimento e il numero di messaggi per il destinatario per comprendere e ricreare il messaggio completo; che non è molto difficile. Possiamo usare gli array di byte con le intestazioni e i messaggi possono essere inviati come codificati base64.

Inoltre non so molto sui limiti che i carrier impongono sul numero di segmenti nel messaggio multipart; in base al mio test sono stato in grado di inviare e ricevere correttamente 160 * 8 segmenti. In base agli standard GSM, i segmenti possono essere fino a 255 ma il conteggio potrebbe dipendere dall'implementazione del provider di servizi.

+0

Android supporta la divisione di lunghi messaggi SMS in più parti e gestisce l'invio di detti messaggi mulit-parte all'interno dell'API SMS. – Phil