Parse 移动 SDK 为 iOS、Android 和 Windows® 应用程序提供了基于云的 API 和服务。Parse SDK 还提供了 JavaScript 和 REST API。使用 Parse API,您可以极快地以最少工作量让您的移动应用程序支持云处理。集成了 Parse API 的移动应用程序可以轻松地在 Parse 云上存储数据对象和文件,发送并侦听推送通知,管理用户,处理地理位置数据,并使用 Twitter 和 Facebook 等社交媒体平台。对于需要扩展的移动应用程序,Parse SDK 可以提供所有灵活的云平台。
本文介绍了面向 Parse 用户、数据对象和文件的核心 Parse API 类。您将学习如何使用访问控制列表 (ACL),以及如何在数据对象上执行 CRUD 操作,还有如何在 Parse 云中存储和检索文件。示例均构建于 Parse SDK for Android 之上。
Parse 仪表板
Parse 仪表板可以帮助开发人员管理应用程序。该仪表板为 API、文件和推送的通知提供了一般指标和应用程序特定的使用指标。通过仪表板可管理应用程序的键和设置。该仪表板还提供了数据浏览器,使开发人员能够浏览(甚至编辑)所存储的 Parse 对象。数据浏览器对于调试非常有用。图 1 是 Parse 仪表板的屏幕截图:
图 1. Parse 仪表板
通过一个应用程序 ID 和客户端 ID 对应用程序进行身份验证。为了获得您的应用程序和客户端 ID,必须通过 Parse 仪表板注册您的应用程序。在您的应用程序上初始化 Parse 库时,会用到这些键。
Parse 数据对象
在 Parse 中,使用 “名称-值” 对的容器 ParseObject 表示数据。ParseObject 可以存储任何与 JSON 兼容的数据,如清单 1 所示:
清单 1. ParseObject 示例
ParseObject myParseObject = new ParseObject("MyObject"); // Class NamemyParseObject.put("name", "C. Enrique Ortiz");myParseObject.put("twitterHandle", "eortiz");myParseObject.put("followers", 123456);
ParseObject 在实例化时被赋予一个 classname(类名称)。在 清单 1 中,类名称是 "MyObject"。类名称与关系数据库中的表名称相似,同一类的 Parse 对象相当于表中的行。
ParseObject 暴露的方法类似于 Java Map 类中的方法,如 put、get 和 remove,以及大量特定于 ParseObject 的其他方法。
ParseObject 名称键 必须是字母数字的,作为一个指导方针,请对名称键使用驼峰式大小写 (camel-casing) 格式。值可以是存储在 JSON 中的任何数据类型,也就是说,可以是数字、字符串、布尔值、数组、JSONObject.NULL、JSONObject 和 JSONArray。ParseObject 所支持的其他数据类型是 Java Date 和 byte[] 数组。ParseObject 还可以包含其他 ParseObject。
清单 2 显示了部分受支持的 ParseObject 值数据类型:
清单 2. ParseObject: 部分支持的值数据类型
// Byte Arraybyte[] byteArray = {1, 2, 3, 4, 5};// A dateDate d = new Date(); // java.util.Date// A numberint number = 21;// A StringString name = "Enrique";// A JSONArray - any mix of JSONObjects, JSONArrays, Strings, Booleans, // Integers, Longs, Doubles, null or NULL.JSONArray jArray = new JSONArray();jArray.put(number);jArray.put(name);// A JSONObject JSONObject jObject = new JSONObject();try { jObject.put("number", number); jObject.put("name", name);} catch (JSONException e) { e.printStackTrace();}// A ParseObjectParseObject pObject = new ParseObject("MyObject"); // Class namepObject.put("myByteArray", byteArray);pObject.put("myDate", d);pObject.put("myString", name);pObject.put("myNumber", number);pObject.put("myJsonArray", jArray);pObject.put("myJsonObject", jObject);pObject.put("myNull", JSONObject.NULL);
清单 2 中的代码创建了一个 ParseObject,它在 Parse 云中被存储为一个对象。然后,许多同一类的 MyObject 被存储为 ParseObject 数据对象的行,可以保存、查询和更新,并能从 Parse 的云存储中删除。甚至可以在应用程序离线时保存数据,Parse 库将数据保存在本地,直到重新建立网络连接。