[Parse]Bước cơ bản làm việc với Parse
- Báo cáo
Bài đăng này đã không được cập nhật trong 5 năm
Theo phương thức truyền thống thì khi lập trình viên mobile khi tạo ra 1 ứng dụng mà cần liên quan đến dữ liệu thì sẽ cần phải kèm theo một web developer để tạo 1 backend để có thể kết nối đến cơ sơ dữ liệu cũng như làm việc trên nó. Như vậy các lập trình viên di động sẽ cần phải đợi chờ backend và viết ra những service phục vụ cho công việc yêu cầu. Nếu cứ theo mô hình như vậy khi làm gì cũng phải phụ thuộc vào web develop và khi cần chỉnh sửa gì thì chỉ có đợi backend và đôi khi việc backend trả giá trị như thế nào thì chỉ biết như vậy. Điều này khiến cho các lập trình viên mobile khó linh động và luôn phải chờ đợi. Điều này giờ đã được giải quyết bằng cách các lập trình viên mobile sẽ làm việc trực tiếp qua 1 serice trung gian chuyên xử lý dự liệu là Parse. Trong bài viết này tôi xin hướng dẫn các bạn 1 cách cơ bản làm quen với việc sử dụng Parse cho việc lập trình cho mobile [Android] và Backend [Php].
Trước khi đi vào chi tiết tôi xin giới thiệu qua cho các bạn Parse là gì và hỗ trợ gì cho chúng ta. Bạn có thể vào trực tiếp trang chủ của Parse để có thể tìm hiểu cũng như đăng ký cho mình 1 tài khoản hoàn toàn miễn phí. Khi vào trang chủ của Parse chúng ta có thể thấy Parse cung cấp cho chúng ta 3 dịch vụ chính đó là:
Một điều đáng nói nữa là Parse cung cấp cho lập trình viên bộ thư viện đầy đủ cho gần như toàn bộ các ngôn ngữ lập trình cho Mobile [iOs, Android, Windows Phone, Unity, Xamarin, ..], cho web hay ứng dụng desktop [OsX, Windows, Php, Unity,..]. Thực sự mọi người lập trình viên đều có thể làm việc với Parse vì được cung cấp tài liệu hướng dẫn đầy đủ cho từng ngôn ngữ lập trình tại đây.
Để bắt tay vào làm quen với Parse tôi sẽ đưa ra 1 yêu cầu khá đơn giản đó là sẽ tạo ra 1 Object là Blog gồm các trường là name - author - content. Công việc yêu cầu phía backend [Php] thì cần quản trị được các Blog này và khi thêm mới sẽ gửi 1 thông báo về các client về Blog mới được thêm này. Còn về phía Client [Android App] sẽ hiển thị các Blog và hiển thị thông báo và click vào đó thì sẽ ra list các Blog gồm cả Blog mới được thêm.
Tạo app mới từ Parse
Sau khi đăng ký mới 1 tài khoản chúng ta đã bắt đầu có thể sử dụng Parse cho công việc của mình, đầu tiên ta cần tạo 1 app mới. Sau khi App mới được tạo ra thì tại màn hình quản lý App ta vào phần Setting rồi vào phần Keys.
Tại đây App sẽ sinh ra các Key cho mục đích làm việc của lập trình. Ví dụ như Backend Php sẽ cần đến Application Id, REST API Key và Master Key, Android thì cần Application ID và Clinet Key
Backend
Để cài đặt và sử dụng Parse cho Php ta cần phải cài Composer trước sau đó tạo 1 file là composer.json có nội dung như sau:
{
"require": {
"parse/php-sdk" : "1.1.*"
}
}
Sau đó download Parse bằng lệnh composer install
. Sau khi chạy xong thì ta sẽ có thư viện Parse trong folder Vendor
. Và ở đây để làm việc với Parse, tôi tạo thêm 1 file có tên là parse.php
trong folder vendor vừa sinh ra. Nội dung file đó như sau
Parse sample
Parse Sample - Viblo
-
Parse sample
Parse Sample - Viblo
Name :
Sau khi khai báo xong chúng ta có thể thử test push notification tại trang web quản lý app của Parse.
File Blog.javaĐể làm việc với Blog ta cần khai báo 1 class để lưu trữ các thuộc tính của Blog đó. Nội dung file Blog như sau
package com.example.framgianguyenquanghuy.parsesample;
/**
* Created by FRAMGIA\nguyen.quang.huy on 26/11/2015.
*/
public class Blog {
public Blog[String _name, String _author, String _content] {
this._name = _name;
this._author = _author;
this._content = _content;
}
public String _name;
public String get_name[] {
return _name;
}
public void set_name[String _name] {
this._name = _name;
}
public String _author;
public String get_author[] {
return _author;
}
public void set_author[String _author] {
this._author = _author;
}
public String _content;
public String get_content[] {
return _content;
}
public void set_content[String _content] {
this._content = _content;
}
}
Các file trình bày XMLTheo đề bài ta đặt ra thì ở app sẽ hiển thị list các Blog và sẽ hiển thị dưới dạng List View. Và trong app này có 3 file ta cần làm đó là activity_main.xml, content_mail.xml và item.xml
File MainActivity.javaĐây là file xử lý dữ liệu giống như lớp Controller. Và ở đây khi gọi đến file này sẽ gọi tất cả Blog ra sau đó điền vào adapter
là danh sách các Blog được khai báo trong file Blog.java và hiển thị ra màn hình kết quả.
package com.example.framgianguyenquanghuy.parsesample;
import android.content.Context;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.parse.ParseQuery;
import com.parse.ParseObject;
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.PushService;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate[Bundle savedInstanceState] {
super.onCreate[savedInstanceState];
ArrayList aBlogs = new ArrayList[];
final BlogAdapter adapter = new BlogAdapter[this, aBlogs];
ParseQuery query = ParseQuery.getQuery["Blog"];
query.findInBackground[new FindCallback[] {
public void done[List scoreList, ParseException e] {
if [e == null] {
for [int i = 0; i < scoreList.size[]; i++] {
ParseObject item = scoreList.get[i];
Blog aItem = new Blog[item.getString["name"], item.getString["author"], item.getString["content"]];
adapter.add[aItem];
}
} else {
Log.d["score", "Error: " + e.getMessage[]];
}
}
}];
setContentView[R.layout.activity_main];
Toolbar toolbar = [Toolbar] findViewById[R.id.toolbar];
setSupportActionBar[toolbar];
ListView listView = [ListView] findViewById[R.id.listBlogs];
listView.setAdapter[adapter];
}
@Override
public boolean onCreateOptionsMenu[Menu menu] {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater[].inflate[R.menu.menu_main, menu];
return true;
}
@Override
public boolean onOptionsItemSelected[MenuItem item] {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId[];
//noinspection SimplifiableIfStatement
if [id == R.id.action_settings] {
return true;
}
return super.onOptionsItemSelected[item];
}
public class BlogAdapter extends ArrayAdapter {
public BlogAdapter[Context context, ArrayList blogs] {
super[context, 0, blogs];
}
@Override
public View getView[int position, View convertView, ViewGroup parent] {
// Get the data item for this position
Blog blog = getItem[position];
// Check if an existing view is being reused, otherwise inflate the view
if [convertView == null] {
convertView = LayoutInflater.from[getContext[]].inflate[R.layout.item, parent, false];
}
// Lookup view for data population
TextView tvName = [TextView] convertView.findViewById[R.id.name];
TextView tvHome = [TextView] convertView.findViewById[R.id.author];
// Populate the data into the template view using the data object
tvName.setText[blog.get_name[]];
tvHome.setText[blog.get_author[]];
// Return the completed view to render on screen
return convertView;
}
}
}
Kết
Trên đây chỉ là 1 bài ứng dụng rất đơn giản về cách làm việc với Parse để cho thấy được cách thức hoạt động ra sao cũng như tiện lợi đem lại. Như vậy ta có thể thấy lập trình viên di động sẽ hoàn toàn chủ động với việc làm việc với dữ liệu mà không phải chờ đợi phía backend. Tuy nhiên có những điều bất lợi khi làm việc với Parse đó là việc cần phải có sự thống nhất về dữ liệu giữa các lập trình viên, vì dữ liệu của Parse là dưới dạng No-Sql nên nếu thiếu sự đồng nhất làm cho gây ra nhiều xáo trộn. Tiếp nữa là do liên kết dến bên thứ 3 do vậy cũng phụ thuộc vào bên Parse nếu có nâng cấp thì app cũng gần như dừng hoạt động. Như vậy, Parse phù hợp cho việc phát triên app mà it làm việc với cơ sở dữ liệu.
Chủ Đề