博观而约取,厚积而薄发。这篇文章主要讲述如何将数据从服务器发送到Android?相关的知识,希望能为你提供帮助。
我正在开发一个项目,我希望我的服务器将一些数据发送到我的应用程序(不需要从移动设备调用Web服务)。它就像一个操作移动应用程序以添加数据的Web面板。因此,当用户在网站中添加数据并单击添加时,它应该将该数据添加到移动应用程序(如果移动设备连接到互联网)。它也像向android应用程序发送命令。我计划使用推送通知(GCM),但推送通知不是一个好选择,因为我希望用户知道我们正在移动应用程序中添加数据。即使应用程序未处于活动状态或已打开,它也应添加。
我想我有3个选项
- 在服务器和移动设备之间进行会启动客户端服务器通信
- 使用SMS发送命令,然后根据要求调用Web服务
- 每15-20秒后调用Web服务以检查是否有任何更新。 (即使在背景中)
答案我真的不知道你从哪里得到你的信息,但你和
MD
都错了,GCM是最好的选择。从你的问题:
我计划使用推送通知(GCM),但推送通知不是一个好选择,因为我不希望用户知道我们正在移动应用程序中添加数据。GCM与向用户显示通知相关,但它不是它的功能。
GCM是“Google Cloud Messaging”。它只会向您的应用发送消息。此消息是在
BroadcastReceiver
内收到的。从这个BroadcastReceiver
内部,您可以执行所需的任何操作,例如将信息与服务器同步。我将为GCM展示
BroadcastReceiver
的可能示例实现。这是一个简化的例子,而不是一个完整的实现:
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle b = intent.getExtras();
// you send those extras from your server
int type = b.getInt("type");
switch(type){
case TYPE_SYNC:
// start a `Service` to sync data from your server
break;
case TYPE_ADD_DATA:
long id = b.getLong("id");
String name = b.getString("name");
String descr = b.getString("descr");
// call code to add id, name, descr to your local data
break;
case TYPE_NOTIFICATION:
String title = b.getString("title");
String message = b.getString("message");
// call code to make a notification with title and message
break;
}
}
}
在此示例中,您的服务器可以发送3种不同类型的GCM。
- TYPE_SYNC:将使您的应用启动后台服务,该服务将连接到服务器并同步信息
- TYPE_ADD_DATA:将直接在消息内发送数据并直接添加到设备存储中(可能是SQLite)
- TYPE_NOTIFICATION:这是用户收到任何通知的唯一选项。其他两个选项对用户是透明的。
WakefulBroadcastReceiver
,请查看官方文档:http://developer.android.com/google/gcm/client.html推荐阅读
- 在点击android push-plugin通知后,Nativescript会调用某些操作
- 为什么我不能注册我的Android设备( xam.pushnotification)
- Android(无法获取Android设备4.1.1的注册ID返回“java.io.IOException:SERVICE_NOT_AVAILABLE”)
- 如何在Chrome,Safari和Firefox中启用TLS 1.3()
- 如何在Apache,Nginx和Cloudflare中启用TLS 1.3()
- 如何在Apache和Nginx中启用CORS()
- 如何像黑客一样分析你的网站以查找漏洞()
- 安全最佳实践–构建可靠的Docker容器
- 13个用于性能和配置更改的DNS监视工具