Android 检测推送通知

Android 检测推送通知,android,push-notification,broadcastreceiver,Android,Push Notification,Broadcastreceiver,我正在Android中创建一个聊天应用程序(类似watsapp) 这里的一个核心和重要的一点是,我需要使用自己的服务器而不是GCM 所以,我如何对清单文件进行编码,以便每当有来自服务器的新消息时,它都会自动在我的广播接收器中检测到。您需要的第一件事是不使用GCM的一个很好的理由。如果您确定您想要自己的服务,那么您必须在客户端和服务器端编写大量代码。以下是总体思路: 注册广播接收器以了解设备何时连接到网络或未连接到网络 创建一个服务,该服务将由广播接收器根据设备网络状态启动和停止 选择“推送”模式

我正在Android中创建一个聊天应用程序(类似watsapp)

这里的一个核心和重要的一点是,我需要使用自己的服务器而不是GCM


所以,我如何对清单文件进行编码,以便每当有来自服务器的新消息时,它都会自动在我的广播接收器中检测到。

您需要的第一件事是不使用GCM的一个很好的理由。如果您确定您想要自己的服务,那么您必须在客户端和服务器端编写大量代码。以下是总体思路:

  • 注册广播接收器以了解设备何时连接到网络或未连接到网络

  • 创建一个服务,该服务将由广播接收器根据设备网络状态启动和停止

  • 选择“推送”模式。您可以使用带有长轮询的经典HTTP请求或套接字来执行真正的推送。本文介绍了这一概念(用于web使用)

  • 实现此模式,以便您的服务将与您的服务器通信

  • 使您的服务具有广播意图,以便应用程序的其余部分可以接收推送


  • 我同意其他人的看法。您应该使用GCM,即使这意味着添加您自己的自定义服务器端代码

    下面是我的广播接收器与GCM推送通知测试应用程序的外观

    public class GCMBroadcastReceiver extends WakefulBroadcastReceiver {
        public static final String TAG = "GCMBroadcastReceiver_";
        @Override
        public void onReceive(Context context, Intent intent){
            Log.v(TAG, "OnReceive was called.");
            ComponentName comp = new ComponentName(context.getPackageName(),
                    GCMNotificationIntentService.class.getName());
            startWakefulService(context, (intent.setComponent(comp)));
            setResultCode(Activity.RESULT_OK);
        }
    }
    
    在intent服务(gcmnotificationtentservice)中,创建实际的通知

    下面是我一直在研究的一个例子:


    您的问题表明搜索严重不足……对此表示遗憾,但我无法找到正确的路径为什么您要避免GCM?您将如何发送推送通知?您如何在Android应用程序中接收它们?你必须有一些关于它的链接。。。