На какие номера требуется отправлять сообщения - на абонентские (обычным людям), или на короткие?
Если на короткие, то бы исходил из того, что короткие SMS-номера через MMS недоступны - и наоборот.
Поэтому, предлагаю в приложении по возможности явно конвертировать сообщение в SMS-формат.
Хотя от абонента до абонента одинаково долетит и SMS, и MMS-сообщение.
Немного теории для диплома, чтобы понять, почему так ;)
Такое различие связано с различными способами передачи SMS и MMS-сообщений:
- SMS-сообщения, как придуманные раньше, передаются по каналам _мобильной сигнализации_ до узла под названием SMSC. Исторически прижившийся протокол для подключения внешних обработчиков SMS-сообщений к SMSC называется SMPP.
- MMS-сообщения, придуманные позже, передаются по пакетному каналу (можно сказать, что через интернет - хотя есть, есть нюансы) до узла под названием MMSC. Для подключения внешних обработчиков MMS-сообщений, комитет 3GPP разродился спецификацией интерфейса под названием MM7 - это SOAP.
Исходя из личного опыта, я бы рассчитывал, что обрабатывающий SMS-сообщения на коротких номерах SMPP-клиент, и обрабатывающий MMS-сообщения веб-сервис - две РАЗНЫЕ программы, друг о друге понятия не имеющие.
Теперь насчёт списания денег.
Тут, опять же, особняком стоят короткие номера.
Списанием денег за сообщения _от абонента к абоненту_ поштучно в наше время, /как правило/, занимается система онлайн-тарификации - OCS. /Как правило/, OCS стыкуется и с SMSC, и с MMSC (по интерфейсу MM9), и почём она их посчитает, написано в описании тарифного плана, на котором сидит абонент.
А вот в случае коротких номеров стоимость сообщения будет определять, скорее всего, обработчик: SMPP-клиент для SMS и веб-сервис для MMS. Связано это с тем, что по стандартным интерфейсам тарификации не передаётся _содержимое_ сообщения - а оно как раз может влиять на его стоимость ("отправь 1, чтобы купить 1 Гбайт интернета или 2, чтобы купить 10 Гбайт").
И здесь мы, опять же, обнаруживаем, что короткий номер может быть доступен, например, только через SMS.