Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java RESTful web服务将通知推送到android应用程序中_Java_Android_Web Services_Rest - Fatal编程技术网

如何使用java RESTful web服务将通知推送到android应用程序中

如何使用java RESTful web服务将通知推送到android应用程序中,java,android,web-services,rest,Java,Android,Web Services,Rest,我正在编写一个android应用程序,它必须接收来自java RESTful Web服务的通知,如gcm(谷歌云消息)。如果有人知道这是如何做到的,请给我一个教程。谢谢大家! android应用程序无法像服务器那样接收HTTP消息。您可以使用GCM或实现某种轮询系统来为您检索信息 弱解: 例如,使用报警管理器,您可以每10秒轮询一次服务器,并获取为您存储的任何信息 更好的解决方案: 使用长轮询,我的意思是,对于你的应用程序,你应该通过HTTP消息发送,让它等待30秒,如果没有新数据发送到服务器,

我正在编写一个android应用程序,它必须接收来自java RESTful Web服务的通知,如gcm(谷歌云消息)。如果有人知道这是如何做到的,请给我一个教程。谢谢大家!

android应用程序无法像服务器那样接收HTTP消息。您可以使用GCM或实现某种轮询系统来为您检索信息

弱解: 例如,使用报警管理器,您可以每10秒轮询一次服务器,并获取为您存储的任何信息

更好的解决方案: 使用长轮询,我的意思是,对于你的应用程序,你应该通过HTTP消息发送,让它等待30秒,如果没有新数据发送到服务器,那么它只会返回,没有数据,然后直接返回。如果在这30秒期间的任何时候,服务器收到一些数据,则将其添加到列表中,并告诉消息释放回具有列表的手机。只有当您每次都希望得到相同类型的信息时,这才真正起作用

最佳解决方案: 同样,使用长轮询。但是,与其将HTTP消息释放回带有新数据的手机,不如返回接收到的新类型数据的列表,就像您可以告诉它有新的文本消息在等待一样。当手机收到回复时,它会意识到一条挂起的消息,然后您可以只发送一条Get消息并从存储的列表中检索该消息

希望对你有帮助,解释得快一点

有关构建Java RESTful服务的帮助,请查看以下链接:

我不再假设您已经了解RESTful服务的工作原理,如果不了解,那么该链接应该会有所帮助。作为“更好的解决方案”的一个示例,只需通过一个GET调用创建一个基本服务,该调用返回一个字符串,以便您知道它正在工作。当你们这样做的时候,你们只需要一个方法,每x秒轮询一次,返回一个新数据列表

/**
 * This is the method you poll every x seconds
 * @return
 */
public List<Location> eventPoll() {
    ArrayList<Location> oldData = new ArrayList<>(m_Location);

    // small possibility this could get a new piece of data thats not in 'oldData' and
    // which would be cleared. Would be better looping through removing each piece
    // individually comparing it to the oldData
    m_Location.clear();

    return oldData;
}
**警告,未测试。我现在就写在这里了**


同样,这一切都偏离了您知道如何完成前面的部分(构建服务)的假设,如果不知道,那么代码也没有多大帮助。祝你好运

实际上,我已经尝试了很多使用gcm的方法,但是在我的国家,一些谷歌服务被屏蔽了,而且通知无法到达android应用程序。。更好的解决方案在我看来很好。因为我应用程序中的用户正在移动,需要按照您所说的更新他的信息(位置),通知取决于此位置>>谢谢,如果您有关于此想法的示例,请在@user3660342分享更新的答案
/**
 * This is the method that stores the new data
 * @return
 */
public Location storeNewLocation(Location location) {
    m_Location.add(location);
}