Дополнительный раздражающий запрос разрешения HTTP в J2ME

Некоторые телефоны запрашивают разрешение у пользователя только при первом подключении. Другие всплывают с запросом разрешения всякий раз, когда мидлет пытается установить HTTP-соединение! Какие есть варианты, если мы хотим подавить подсказку?

Можем ли мы подписать JAR, используя только один CA (центр сертификации), и заставить его работать на всех устройствах? Нужно ли платить за подпись под каждым выпуском?

Можно ли создать собственный сертификат ЦС и посоветовать нашим клиентам установить его на свое устройство?

С другой стороны, кажется, что соединения с обычными сокетами не страдают от этого. Есть ли бесплатная реализация HTTP поверх TCP для J2ME?


person Hans Malherbe    schedule 20.06.2009    source источник
comment
Страница подписывание Java ME для чайников может оказаться полезной.   -  person    schedule 30.05.2010


Ответы (5)


Некоторые телефоны позволяют вручную изменять настройку, чтобы установить ее один раз за сеанс. Или попробуйте добавить

MIDlet-Permissions: javax.microedition.io.connector.http

в файл jad.

Да, если сборка подписана корневым сертификатом, доступным на большинстве устройств, например, сертификатом Verisign Class 3

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

Обычные сокетные соединения могут добавить накладные расходы на обработку данных на стороне клиента. Также есть некоторые проблемы с безопасностью.

person Prabhu R    schedule 22.06.2009
comment
Спасибо за предложение. Я попробовал разрешение, но безуспешно. Возможно, однажды у iPhone будет более 5% рынка, и нам больше не придется беспокоиться об этой чепухе J2ME. - person Hans Malherbe; 22.06.2009

Подписание JAR не гарантирует подавления этих запросов на всех телефонах и во всех сетях. На некоторых это может сработать. AFAIK вам обычно нужно подписывать каждую сборку; поэтому, если вы используете одну и ту же сборку на многих телефонах, вам нужно подписать только один раз.

Вы можете написать свою собственную реализацию HTTP через сокеты, но помните, что реализации Socket не разрешают доступ к портам 80 и 8080 (опять же AFAIK).

Лучший вариант при появлении нескольких запросов для HTTP - это направить пользователя к настройке разрешений MIDlet в меню его телефона; это следует изменить на «спросить один раз».

HTH, фанкибро

person funkybro    schedule 22.06.2009

Корневой сертификат Java Verifieds UTI присутствует не во всех комбинациях телефонов / сетей, то же самое верно для других доменов доверенной третьей стороны, таких как Verisign и Thawte (для этих органов, в частности, для устройств Motorola)

Справедливо сказать, что сертификат UTI, вероятно, является тем, что нужно выбрать, чтобы предоставить вам наибольшее покрытие для всех мобильных телефонов.

person kgutteridge    schedule 03.07.2009

Чтобы подавить запрос HTTP-соединения, подписание приложения - единственный вариант. Другой вариант - получить предварительную загрузку на предварительном рынке телефона, но даже производители телефонов требуют подписанных jad / jar-файлов.

Работа набора jad / jar на разных устройствах зависит не от подписи, а от того, как вы разрабатываете приложение. Если вы можете решить эту проблему, то да, вы можете использовать один подписанный jad / jar на нескольких устройствах.

Я не знаю, как создавать собственные сертификаты и просить клиентов установить их. Я не думаю, что это работает, потому что не думаю, что это возможно.

HTTP через TCP - довольно простая реализация, если вы знаете, что делаете, но я не знаю ни одной ее бесплатной реализации.

person omermuhammed    schedule 21.06.2009

Получите Java Verified, и вы обнаружите, что во всех сетях и на всех телефонах - пользователю будет предлагаться только один раз при каждом запуске приложения для авторизации соединения.

person Grouchal    schedule 24.06.2009