Уведомления GCM push не поступают через прокси-сервер

Я разрабатываю небольшое приложение для моего проекта курса (аналогично Snapchat), который позволяет отправлять и получать изображения и видео. Я использую BaaS под названием Parse, который использует GCM для доставки push-уведомлений. Однако проблема заключается в том, что в моем кампусе используется прокси-сеть, из-за которой многие приложения не работают (WhatsApp, Instagram), а некоторые приложения (Snapchat) работают, но их уведомления не доставляются. То же самое касается моего приложения.

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

Введите описание изображения здесь

Все зависит от политики доступа к сети в университетском городке. Вы не можете сделать, если ваш брандмауэр прокси-сервера Campus не предоставляет доступ к этим сайтам. Однако вы можете попросить их разрешить этот URL через свой брандмауэр прокси.

Или просто вы можете использовать какой-либо другой внешний прокси-сервер, добавив строки в свой код

System.setProperty("https.proxyHost", "<IP>"); System.setProperty("https.proxyPort", "<Port>");

Где вы пытаетесь подключить API Google. Скажем, если вы используете что-то вроде этого,

 URL url = new URL("https://android.googleapis.com/gcm/send"); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Authorization", "key="+<your api key>); 

Перед этими строками, где вы пытаетесь подключиться к API Google, добавьте строки настройки прокси, указанные выше две строки. Кроме того, попробуйте с прокси-сервером Campus, а также с другим внешним прокси-сервером, вы узнаете, что проблема связана с вашим прокси-сервером в кампусе или нет.

Попробуйте это, надеюсь, что это поможет с вашей проблемой .. !!!!!

Используйте что-то вроде этого,

 import com.google.android.gcm.server.Sender; public class ProxySender extends Sender { public ProxySender(String key) { super(key); // TODO Auto-generated constructor stub } @Override protected HttpURLConnection getConnection(String url) throws IOException { Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("<YOUR SERVER IP>", YOUR PORT)); HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(proxy); return conn; } } 

Согласно Google, чтобы получить GCM, мы должны открыть несколько портов. подробности ниже,

«Если в вашей организации есть брандмауэр, который ограничивает трафик в Интернет или из Интернета, вам необходимо настроить его для обеспечения возможности подключения к GCM, чтобы ваши устройства Android получали сообщения. Открытые порты: 5228, 5229 и 5230. GCM обычно использует только 5228, но иногда использует 5229 и 5230. GCM не предоставляет определенные IP-адреса, поэтому вы должны разрешить брандмауэру принимать исходящие подключения ко всем IP-адресам, содержащимся в блоках IP, перечисленных в ASN от 15169.

Вы пытаетесь отправить GCM через синтаксический анализ SDK? Вы можете получить доступ к этим URL-адресам?

Intereting Posts