2015-05-07 3 views
3

Я нахожусь в точке своего приложения для Android, что мне нужно реализовать push-уведомления, у меня уже есть ключ API Google и все, и вы включили push-уведомления на ключ.Мне нужны предложения по отправке push-уведомлений

Я понимаю, что уведомления отправляются с сервера вниз по течению к приложению.

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

Но то, что я не особо понимаю, отправляет сообщение вниз по телу к телефону. Как это делается, я только что отправлял HTTP-сообщения вверх по течению на мой сервер, и я несколько смущен тем, как это сделать. Есть ли серверные приложения, которые могут это сделать, и если да, то что я ищу.

ответ

2

Существует несколько способов отправки нисходящего сообщения с сервера. Один из них использует PHP. Вы можете написать PHP-скрипт для отправки сообщения в GCM (который фактически отправляет уведомление по телефону).

Это то, что я придумал для моего приложения:

я использовал локон

$url = 'https://android.googleapis.com/gcm/send'; 
$receive_id=$_POST['receiver_key']; 
$message=$_POST['message']; 

$registrationIDs = array($receive_id); 


    $fields = array(
     'registration_ids' => $registrationIDs, 
     'data' => array("message" => $message), 
    ); 
    $headers = array(
     'Authorization: key=' . $api_key, 
     'Content-Type: application/json' 
    ); 

    $ch=curl_init(); 

curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_POST,true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

$curl_result = curl_exec($ch); 

То, что я на самом деле выпускаемый на спусковом крючке приложения это PHP скрипт для запуска, когда required.this является то, что называемой отправкой нисходящего сообщения с сервера.

+0

Это будет работать только при срабатывании телефона, правильно ?. Допустим, я хотел отправить уведомление на конкретный телефон без предварительной связи. Может ли это быть сделано через PHP? –

+0

Да, это можно сделать. Вам нужно использовать триггеры в своей базе данных. Trigger запускает ваш PHP-скрипт всякий раз, когда обновляется ваша база данных. Пройдите следующий поиск по Google, чтобы узнать, как использовать триггеры для запуска скрипта PHP из базы данных: [link] https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8# q = trigger + php + from + mysql –

+0

После дальнейшего анализа, я чувствую, что ваш вопрос был более подходящим в качестве ответа. Благодарю. –

1

Побольше поиск, что Вы получите это:

Push Notifications in Android using Google App Engine

Это должно быть то, что вы ищете. Здесь ссылка на сайт Google также дает некоторое представление о нем: http://developer.android.com/google/gcm/http.html

+1

Спасибо, что я уже смотрел на это, просто пытаюсь выяснить, работает ли работа вокруг. Если я не хочу настраивать мужа Apache. –

1

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

Одним из таких программ я знаю, IBM MobileFirst (ранее известный как Worklight) ... Ее получили толчок уведомление встраивать в том, что ... Там может быть много больше серверов программного обеспечения, которые делают то же самое

+0

Спасибо, я их посмотрю. –

1

Посмотрите на мою dev push server , Все, что вам нужно, просто вставьте свой ключ google api и идентификатор регистрации в соответствующие поля и отправьте push на ваш клиент. Также вы можете посмотреть исходный код этого толкающего сервера on the Bitbucket

+0

Это на самом деле очень полезно, спасибо –

+1

Использует ли dev-сервер-сервер aws sns? или только GCM – kavita

+0

@kavita Этот сервер dev push использует только GCM, я написал его 2-3 года назад. Я думаю, aws sns - это что-то новое. Во всяком случае, не стесняйтесь изменять исходный код тестового push-сервера https://github.com/alexzatsepin/GcmPusher и делать его актуальным на сегодняшний день :) – Samik

2

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

Настройтесь с ГКМ (звучит, как вы уже сделали)

Есть приложение зарегистрировать это устройство для GCM и настроить обработчик для приема сообщений провайдера. Обычно это делается при запуске приложения, поэтому да, вам потребуется предварительная связь с устройством. Вы также, как правило, хотите дать им возможность отказаться от push-сообщений. Основная часть приложения изложена here

У вас есть сценарий, который запускается при обновлении базы данных. Затем вы можете позвонить в GCM, чтобы отправить сообщение, передав сообщение и идентификаторы регистрации определенных устройств в качестве вашей полезной нагрузки.

0

Я просто хочу обновить это сообщение на всякий случай, если эта информация может быть полезна другим. Таким образом, по сути, что я сделал, когда пользователь устанавливает приложение, он зарегистрируется в Google, чтобы получить идентификатор регистрации, после чего он отправит его в мою базу данных, когда мне это понадобится позже. Теперь, когда пользователь обновляет базу данных, добавляя сообщение или позволяет добавить комментарий, он запустит php-скрипт, который запускает мой веб-сервлет на tomcat, откуда мой сервлет tomcat запрашивает мою базу данных и выясняет, кто (идентификатор регистрации) отправить сообщение.

Смежные вопросы