0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
|
|
1 | |
Как лучше поступить?12.12.2015, 00:47. Показов 1169. Ответов 18
Метки нет (Все метки)
Есть уже законченное приложение. Принцип которого вэб приложение, грузящее основную часть через инет. Но не суть - тут всё работает. Есть необходимость добавить проверку некоего состояния (проще говоря опрашивать какой то URL получая ответ) и в случае если ответ тот, что нужен, то выводить уведомление всерху в трее (ну как это все приложения делают). Как это реализовать? Нужно ли как то писать стороний сервис с проверкой урл или этот сервис пишется внутри моего приложения и он же справится с выводом уведомлений?
Я просто никогда не писал сервисы и не занимался уведомлениями и не знаю как лучше это реализовать. Но в иделае хотелось бы всё в одном приложении. Добавлено через 1 час 27 минут P.S. забыл добавить - опрос состояния нужен в фоновом режиме. Ну как у смс, скайпа или подобных програм, когда фоновый процесс (сервис) чекает что либо и выводит уведомление.
0
|
12.12.2015, 00:47 | |
Ответы с готовыми решениями:
18
Как лучше поступить с задачей сохранения картинки на сервере Подскажите как лучше поступить(делегирование,дефайн.) Как лучше поступить? Как лучше поступить? |
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
12.12.2015, 14:25 | 2 |
Прочитайте внимательно статью.
http://startandroid.ru/ru/urok... toj-primer
0
|
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
|
|
12.12.2015, 15:00 [ТС] | 3 |
Да, спасибо. Мне именно принцип понять нужно, я мог найти ответ в инете и сам, но я же могу найти решение не для моей ситуации и начать работать не в том направлении. Потому решил посоветоваться.
0
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
12.12.2015, 15:35 | 4 |
У вас будет отдельный поток. В нем вы будете по таймеру делать HTTP запрос на ваш ресурс, и результат проверять на нужный вам action. При совпадении вы можете создавать уведомление.
0
|
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
|
|
12.12.2015, 15:40 [ТС] | 5 |
Я уже создал тестовый сервис. Сейчас решаю как правильнее сделать опрос (цикл?) и уничтожение этого цикла. Скорее всего буду давать возможность частоты опроса 1 мин и более (тобиш таймеры работающие по милисекундам не особо нужны, я думаю использовать TimeUnit).
ну и отдельный вопрос будет - как мне опросить некий урл, могу ли я сделать POST запрос или мне доступны только GET, и как это вообще сделать и получить результат.
0
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
12.12.2015, 17:06 | 6 |
Все что вам нужно было, это открыть гугл и вписать в поисковую строчку - "java post get запрос". Но я сделал это за вас, вот ссылка с подробными примерами - http://java-help.ru/android-get-post/
0
|
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
|
|
12.12.2015, 18:15 [ТС] | 7 |
Это действительно не сложно. Но я же не знал, что с сервисами это всё применимо. Я был уверен, что сервисы имеют ограничения кроме графического интерфейса.
Выводить всплывающие уведомление (те что сверху в строке) лучше из сервиса или из активити? Или это вообще не играет роли?
0
|
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
|
|
12.12.2015, 18:48 [ТС] | 9 |
Допускаю, что мне может понадобиться проверять статус при запуске андройда (если пользователь выдерет), а это как я понимаю уже только сервис.
Я думал про асинк, и использую это в двухсторонней связи приложения в вэб частью
0
|
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
|
|
12.12.2015, 20:33 [ТС] | 11 |
Может это то, что нужно. Я про такую технологию не знал. Почитаю.
Добавлено через 17 минут Похоже для меня это очень сложно. Я PhP и JS программист, на Java я пишу с трудом копипастя код. Я понял, что эта технология позволяет связать мой сервер с облаком которое раздает уже некие данные. Но мне же всёравно придётся использовать сервис? просто обращаться к некоему объекту облака который уже будет поддерживать соединение и гонять трафик? Добавлено через 25 минут давайте я опишу задачу полностью и даже покажу пример уже рабочего приложения. Наверное есть правильные решения и "мои". Вот вэб приложение https://play.google.com/store/... tarcitizen Я хочу сделать, что бы при появлении новостей (которые для всех клиентов пока одни и те же, разделение я не предусмтариваю, только для рус. версии отображаю сразу рус часть новостей, и скрываю англ и для английского наоборот, но все могут видеть и те и те новости). Так вот, мне в принципе пригодны 2 варианта как я понимаю. 1) Опрашивать с клиента. Отсылая (ид) последней загруженной новости на сервер и там сервер думает и высылает, если есть что загрузить например в JSON предоставляя мне заголовки для всплывающих уведомлений. Человек кликает на уведомление, открывается из свернутого состояния или грузится программа и отображает новоти просто все которые есть и соответственно новые. 2) Это если сделать иначе. Сервер (получив новость) шлёт всем клиентам (я так понимаю что это как раз та вышеупомянутая технология?) что есть новость. даже если в ту же секунду кто то обновлял новости или только запустил программу, то ничего страшного, если при этом вылезет уведомление о появлении новостей которые 2 сек назад пользователь загрузил (главное что бы не спустя 2 мин). если что, то я уже надыбал и обкатал кусок кода который обрабатывает JSON и замечательно получаю в массив заголовки новых новостей. Просто потом возможно буду чекать не только новости и для этого хочу использовать JSON, так как в него всё можно завернут и структурировать.
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
12.12.2015, 20:46 | 12 |
Там как раз основная часть серверная, на самом телефоне ничего сложного.
Нет, при получении уведомления оно придет в Receiver и оттуда можно все что угодно делать с полученными данными.
Бывает приходит и через несколько часов, но можно проверить локальные новости и показать уведомление только если новые еще не загружали.
0
|
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
|
|
12.12.2015, 20:47 [ТС] | 13 |
Но инициатором получения\рассылки выступает сервер (понятно что клиент обращается, но тем не менее)?
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
12.12.2015, 20:49 | 14 |
Да сервер, клиент не обращается. Там по идее висит гугл сервис и проверяет не пришло ли какому-то приложению сообщение и, если пришло, рассылает эти сообщения по приложениям.
0
|
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
|
|
12.12.2015, 20:51 [ТС] | 15 |
Да, это то что надо точно. Попробую разобраться.
Моему приложению из сервиса гугла будет приходить в итоге какой то алерт или целиком массив с присланными данными и я это получаю и думаю что делать с этим?
0
|
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
|
|
12.12.2015, 21:01 | 16 |
Можно добавить до 4х килобайт строку к сообщению, и она будет доставлена в приложение, если будет больше 4х - сообщение не дойдет.
0
|
150 / 137 / 35
Регистрация: 29.07.2012
Сообщений: 709
|
|
12.12.2015, 21:37 | 17 |
Советую вам прочитать литературу про разработку при помощи Android SDK.
0
|
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
|
|
13.12.2015, 17:23 [ТС] | 18 |
Я хочу уточнить правильно ли я понял GCM. Я налаживаю через пхп связь с сервисом гугла на андройде (он сам манагерит связь хранит сообщения), чекаю своим сервисом в некоем пуле (ресивере) наличие моих сообщений (их может прийти или 0 или 10 или 1...), проверяю ИД (при условии что я его туда послал) и если ИД выше моего, то я даю ресиверу команду на отображение всплывающего сообщения.
Я пытаюсь логику в голове определить что бы уже потом под нее решения искать. https://developers.google.com/... configured Добавлено через 1 час 16 минут Сгенерил некий google-services.json демо и на этом встал. не понимаю ни фи га. Вот кусок из урока гугла: Что за GcmSender.java? У меня в проекте такого нет. 31 строка? API_KEY у меня встречается только в импортнутом json конфиге. Как выполнить "run the following gradle command"? я не отрицаю, что в андройд разработке я 0. Но я пытаюсь применяя иной опыт. Но сейчас я вообще не понимаю, и не могу найти русскоязычных уроков. А всё что есть это обучалка от майкрософт на базе Azure (который уже платный и там всеравно очень непонятно всё в описании.) и от гуга (( И вроде просто всё но не выходит. First, make sure your API key is provided as the value of API_KEY in line 31 of GcmSender.java Inside Android Studio, click the run button and select an attached device. When the sample application loads on your device, run the following gradle command to send a notification to all registered app instances: ./gradlew run -Pmsg="<message>" Может кто то знает урок по этим облачным пушап уведомлениям в идеале на русском? Добавлено через 29 минут Пытаюсь зайти с другой стороны и опять затык apply plugin: 'com.google.gms.google-services' Gradle sync failed: Plugin with id 'com.google.gms.google-services' not found. чтож за.... пытаюсь гуглить но нифига не понятно как именно эту проблему решить. Добавлено через 17 минут кусок gradle. apply plugin: 'com.google.gms.google-services' - выдает ошибку. перерыл всё. не понял как его подключить. apply plugin: 'com.android.application' apply plugin: 'com.google.gms.google-services' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' classpath 'com.google.gms:google-services:1.5.0-beta2' compile 'com.google.android.gms:play-services-gcm:8.3.0' }
0
|
2 / 2 / 0
Регистрация: 05.12.2014
Сообщений: 39
|
|
18.12.2015, 11:16 | 19 |
По ссылке написано - на первом шаге качаешь /android/gcm с github, открываешь через Android Studio. Будет App ( приложение ) и GCMSender (я так понял он эмулирует сервер). Открываешь GcmSender.java, и заменяешь API_KEY на свой (его надо перед этим сгенерировать). Run the following gradle command - можно через терминал, можно через командную строку
0
|
18.12.2015, 11:16 | |
18.12.2015, 11:16 | |
Помогаю со студенческими работами здесь
19
Как лучше поступить? Как лучше поступить? Как лучше поступить? Как лучше поступить? Как лучше поступить? Как лучше поступить? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |