Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Shin0by
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
#1

Как лучше поступить? - Программирование Android

12.12.2015, 00:47. Просмотров 643. Ответов 18
Метки нет (Все метки)

Есть уже законченное приложение. Принцип которого вэб приложение, грузящее основную часть через инет. Но не суть - тут всё работает. Есть необходимость добавить проверку некоего состояния (проще говоря опрашивать какой то URL получая ответ) и в случае если ответ тот, что нужен, то выводить уведомление всерху в трее (ну как это все приложения делают). Как это реализовать? Нужно ли как то писать стороний сервис с проверкой урл или этот сервис пишется внутри моего приложения и он же справится с выводом уведомлений?

Я просто никогда не писал сервисы и не занимался уведомлениями и не знаю как лучше это реализовать. Но в иделае хотелось бы всё в одном приложении.

Добавлено через 1 час 27 минут
P.S. забыл добавить - опрос состояния нужен в фоновом режиме. Ну как у смс, скайпа или подобных програм, когда фоновый процесс (сервис) чекает что либо и выводит уведомление.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2015, 00:47     Как лучше поступить?
Посмотрите здесь:

Как лучше поступить с задачей сохранения картинки на сервере - Программирование Android
Такая дилемма.. Задача в том, чтобы получить картинку с камеры android-устройства и отправить ее на сервер, плюс еще кое-какие данные....

Как лучше сделать? - Программирование Android
Всем доброго времени суток. Интересует Ваше мнение как лучше реализовать. Есть приложение, по типу справочника (Life-Hacks). Что лучше...

Как лучше организовать напоминалку? - Программирование Android
Здравствуйте! Вот думаю написать прогу-напоминалку. Обязательно должна быть ф-ция отправки уведомлений в заданное время (или срабатывания...

Как лучше реализовать компоновку? - Программирование Android
Здравствуйте! Имеется вот такой макет: Как это лучше реализовать? GridView не подходит, а жестко привязывать к одному слою другой с...

Как лучше создать такую ячейку - Программирование Android
Здравствуйте! Вопрос в следующем, хочу сделать при ландшафтной ориентации экрана меню слева из пяти пунктов, стандартными методами плохо...

Как лучше инициализировать контекст активити - Программирование Android
Я инициализирую так context = getApplicationContext() а как правильно?? Добавлено через 22 секунды как можно по другому??

Как лучше шифровать данные приложения? - Программирование Android
Не знаю в какой ветке писать, но раз уж приложения так легко ломаются... У меня есть данные в небольшом текстовом файле. Которые я не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
12.12.2015, 14:25     Как лучше поступить? #2
Прочитайте внимательно статью.
http://startandroid.ru/ru/uroki/vse-...prostoj-primer
Shin0by
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
12.12.2015, 15:00  [ТС]     Как лучше поступить? #3
Да, спасибо. Мне именно принцип понять нужно, я мог найти ответ в инете и сам, но я же могу найти решение не для моей ситуации и начать работать не в том направлении. Потому решил посоветоваться.
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
12.12.2015, 15:35     Как лучше поступить? #4
У вас будет отдельный поток. В нем вы будете по таймеру делать HTTP запрос на ваш ресурс, и результат проверять на нужный вам action. При совпадении вы можете создавать уведомление.
Shin0by
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
12.12.2015, 15:40  [ТС]     Как лучше поступить? #5
Я уже создал тестовый сервис. Сейчас решаю как правильнее сделать опрос (цикл?) и уничтожение этого цикла. Скорее всего буду давать возможность частоты опроса 1 мин и более (тобиш таймеры работающие по милисекундам не особо нужны, я думаю использовать TimeUnit).

ну и отдельный вопрос будет - как мне опросить некий урл, могу ли я сделать POST запрос или мне доступны только GET, и как это вообще сделать и получить результат.
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
12.12.2015, 17:06     Как лучше поступить? #6
Цитата Сообщение от Shin0by Посмотреть сообщение
ну и отдельный вопрос будет - как мне опросить некий урл, могу ли я сделать POST запрос или мне доступны только GET, и как это вообще сделать и получить результат.
Все что вам нужно было, это открыть гугл и вписать в поисковую строчку - "java post get запрос". Но я сделал это за вас, вот ссылка с подробными примерами - http://java-help.ru/android-get-post/
Shin0by
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
12.12.2015, 18:15  [ТС]     Как лучше поступить? #7
Это действительно не сложно. Но я же не знал, что с сервисами это всё применимо. Я был уверен, что сервисы имеют ограничения кроме графического интерфейса.

Выводить всплывающие уведомление (те что сверху в строке) лучше из сервиса или из активити? Или это вообще не играет роли?
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
12.12.2015, 18:41     Как лучше поступить? #8
прочитал задачу. а разве asynctask Вам не достаточно?
Shin0by
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
12.12.2015, 18:48  [ТС]     Как лучше поступить? #9
Допускаю, что мне может понадобиться проверять статус при запуске андройда (если пользователь выдерет), а это как я понимаю уже только сервис.

Я думал про асинк, и использую это в двухсторонней связи приложения в вэб частью
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
12.12.2015, 19:48     Как лучше поступить? #10
Shin0by, а может лучше смотреть в сторону GCM? Постоянные запросы будут выжирать батарею очень быстро.
Shin0by
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
12.12.2015, 20:33  [ТС]     Как лучше поступить? #11
Может это то, что нужно. Я про такую технологию не знал. Почитаю.

Добавлено через 17 минут
Похоже для меня это очень сложно. Я PhP и JS программист, на Java я пишу с трудом копипастя код. Я понял, что эта технология позволяет связать мой сервер с облаком которое раздает уже некие данные.

Но мне же всёравно придётся использовать сервис? просто обращаться к некоему объекту облака который уже будет поддерживать соединение и гонять трафик?

Добавлено через 25 минут
давайте я опишу задачу полностью и даже покажу пример уже рабочего приложения. Наверное есть правильные решения и "мои".

Вот вэб приложение https://play.google.com/store/apps/d...by.starcitizen

Я хочу сделать, что бы при появлении новостей (которые для всех клиентов пока одни и те же, разделение я не предусмтариваю, только для рус. версии отображаю сразу рус часть новостей, и скрываю англ и для английского наоборот, но все могут видеть и те и те новости). Так вот, мне в принципе пригодны 2 варианта как я понимаю.
1) Опрашивать с клиента. Отсылая (ид) последней загруженной новости на сервер и там сервер думает и высылает, если есть что загрузить например в JSON предоставляя мне заголовки для всплывающих уведомлений.
Человек кликает на уведомление, открывается из свернутого состояния или грузится программа и отображает новоти просто все которые есть и соответственно новые.

2) Это если сделать иначе. Сервер (получив новость) шлёт всем клиентам (я так понимаю что это как раз та вышеупомянутая технология?) что есть новость. даже если в ту же секунду кто то обновлял новости или только запустил программу, то ничего страшного, если при этом вылезет уведомление о появлении новостей которые 2 сек назад пользователь загрузил (главное что бы не спустя 2 мин).

если что, то я уже надыбал и обкатал кусок кода который обрабатывает JSON и замечательно получаю в массив заголовки новых новостей. Просто потом возможно буду чекать не только новости и для этого хочу использовать JSON, так как в него всё можно завернут и структурировать.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
12.12.2015, 20:46     Как лучше поступить? #12
Цитата Сообщение от Shin0by Посмотреть сообщение
Похоже для меня это очень сложно. Я PhP и JS программист
Там как раз основная часть серверная, на самом телефоне ничего сложного.
Цитата Сообщение от Shin0by Посмотреть сообщение
Но мне же всёравно придётся использовать сервис?
Нет, при получении уведомления оно придет в Receiver и оттуда можно все что угодно делать с полученными данными.
Цитата Сообщение от Shin0by Посмотреть сообщение
если при этом вылезет уведомление о появлении новостей которые 2 сек назад пользователь загрузил (главное что бы не спустя 2 мин).
Бывает приходит и через несколько часов, но можно проверить локальные новости и показать уведомление только если новые еще не загружали.
Shin0by
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
12.12.2015, 20:47  [ТС]     Как лучше поступить? #13
Но инициатором получения\рассылки выступает сервер (понятно что клиент обращается, но тем не менее)?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
12.12.2015, 20:49     Как лучше поступить? #14
Цитата Сообщение от Shin0by Посмотреть сообщение
Но инициатором получения\рассылки выступает сервер (понятно что клиент обращается, но тем не менее)?
Да сервер, клиент не обращается. Там по идее висит гугл сервис и проверяет не пришло ли какому-то приложению сообщение и, если пришло, рассылает эти сообщения по приложениям.
Shin0by
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
12.12.2015, 20:51  [ТС]     Как лучше поступить? #15
Да, это то что надо точно. Попробую разобраться.

Моему приложению из сервиса гугла будет приходить в итоге какой то алерт или целиком массив с присланными данными и я это получаю и думаю что делать с этим?
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,648
Завершенные тесты: 1
12.12.2015, 21:01     Как лучше поступить? #16
Можно добавить до 4х килобайт строку к сообщению, и она будет доставлена в приложение, если будет больше 4х - сообщение не дойдет.
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
12.12.2015, 21:37     Как лучше поступить? #17
Советую вам прочитать литературу про разработку при помощи Android SDK.
Shin0by
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 10
13.12.2015, 17:23  [ТС]     Как лучше поступить? #18
Я хочу уточнить правильно ли я понял GCM. Я налаживаю через пхп связь с сервисом гугла на андройде (он сам манагерит связь хранит сообщения), чекаю своим сервисом в некоем пуле (ресивере) наличие моих сообщений (их может прийти или 0 или 10 или 1...), проверяю ИД (при условии что я его туда послал) и если ИД выше моего, то я даю ресиверу команду на отображение всплывающего сообщения.

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

https://developers.google.com/cloud-...art?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'
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2015, 11:16     Как лучше поступить?
Еще ссылки по теме:

Подскажите, как лучше сделать (справочник организаций) - Программирование Android
Здравствуйте уважаемые! В программировании для Android я новичок. Заинтересовал вопрос разработки справочника организаций. Создал...

Как лучше реализовать вывод объёмного текста?! - Программирование Android
Приветствую. Есть такая проблема в приложение типа туристического справочника нужно выводить текст в активити, и текста этого...

Как лучше организовать массив String[] из 60 элементов? - Программирование Android
Здравствуйте! Как лучше организовать массив String из 60 элементов? Речь идёт о создании собственного TimePicker. Так вот туда нужно...

Как лучше записать json объект в таблицу БД Sqlite - Программирование Android
Всем привет, в json'е приходит массив объектов, все разные. Как лучше и правильней засунуть каждый объект в таблицу sqlite ?

Ошибка при парсинге или как лучше сделать? - Программирование Android
Ребята помогите пожалуйста. В папке assets у меня 7 txt. файлов.7 вопросов. По нажатию на кнопку, происходит парсинг каждого файла и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Deanon
2 / 2 / 0
Регистрация: 05.12.2014
Сообщений: 37
Завершенные тесты: 1
18.12.2015, 11:16     Как лучше поступить? #19
По ссылке написано - на первом шаге качаешь /android/gcm с github, открываешь через Android Studio. Будет App ( приложение ) и GCMSender (я так понял он эмулирует сервер). Открываешь GcmSender.java, и заменяешь API_KEY на свой (его надо перед этим сгенерировать). Run the following gradle command - можно через терминал, можно через командную строку
Yandex
Объявления
18.12.2015, 11:16     Как лучше поступить?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru