hướng dẫn thêm tính năng chia sẻ cho ứng dụng của bạn

Ở bài này mình sẽ hướng dẫn các bạn thêm tính năng chia sẻ cho ứng dụng của chính mình.

Air Drop giúp liệt kê ra danh sách các lựa chọn chia sẻ!

Air Drop là câu trả lời của Apple : truy cập tập tin và chia sẻ dữ liệu.Trước khi ra mắt iOS 7, người dùng cần phải dựa trên các ứng dụng của bên thứ 3 như Bump để chia sẻ tập tin giữa các thiết bị iOS.Trong iOS 7, Apple đã giới thiệu một tính năng mới gọi là Air Drop . Nói tóm lại, tính năng cho phép bạn chia sẻ hình ảnh, video, danh bạ, URL, Passbook trôi qua, danh sách những ứng dụng trên App Store, danh sách những phương tiện truyền thông trên iTunes Store, vị trí trong Maps, vv…

Là một nhà phát triển, sẽ không thể tuyệt vời hơn nếu kết hợp các tính năng chia sẻ  trong ứng dụng của bạn?Vì vậy, người dùng có thể dễ dàng chia sẻ hình ảnh, tập tin văn bản hoặc bất kỳ loại tài liệu một cách dễ dàng với các thiết bị gần đó.Lớp UIActivityViewController kèm trong iOS 7 SDK giúp  các nhà phát triển đơn giản hoá tính năng gọi “danh sách các kiểu chia sẻ  dữ liệu như facebook , tinh nhắn , zalo ….” trong ứng dụng của họ.Những gì bạn cần chỉ là đăng ký lớp các đối tượng bạn muốn chia sẻ và hệ thống sẽ xử lý các phần còn lại.Trong hướng dẫn này, chúng ta sẽ chứng minh việc sử dụng UIActivityViewController và xem làm thế nào bạn có thể sử dụng nó để chia sẻ hình ảnh / tài liệu bằng cách sử dụng Air Drop .

Ở bài này mình sẽ hướng dẫn các bạn gọi Air drop!

ứng dụng của mình sẽ thiết kế như sau:

Screen Shot 2016-05-12 at 14.50.33

 

– tableView hiển thị tên ảnh và tên file text.

– showViewcontroller chứa WebView để hiển thị ảnh và txt.

khi click vào nút chia sẻ Air drop xuất hiện để lựa chọn chia sẻ!

Bài này trọng tâm là AirDrop vì thế mình đã tạo mẫu dự án các bạn tải về tại đây

http://www.mediafire.com/download/ra09bn3fuhfzr8f/Share_2.zip

Trong mẫu dự án của mình gồm!

class TableViewcontroller quản lý màn hình TableViewcontroller đã đăng ký delegate!

class showViewController quản lý màn hình showViewController.

và thiết kế 2 màn hình kết nối Navigation như hình vẽ! gồm:

TableViewcontroller để tableViewcell kiểu basic

Screen Shot 2016-05-12 at 14.56.38

 

 

showViewController chứa WebView và một nút bar button item dùng để chia sẻ!

và một tấm ảnh , 1 file text

Các identifine kết nối:

TableViewcell : identifine @”cell”.

Screen Shot 2016-05-12 at 14.56.38

 

TableViewcontroller kết nối với showViewController :identifine @”show”.

Screen Shot 2016-05-12 at 11.40.10

ok dự án mẫu của mình gồm những thành phần như trên!

Đầu tiên chúng ta làm cách nào để hiển thị tên file ảnh và tên file text lên trên tableView.

chúng ta phải tạo một mảng lưu tên  file ảnh và file text !

@implementation TableViewController{
    NSArray *url;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    url=@[@"DevPro-việt-nam.png",@"inforDevpro.txt"];
    
}

 

load dữ liệu lên tableView các bạn them đoạn mã sau !!! mình sẽ không giải thích thêm vì đã quá quen thuộc rồi! 🙂

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [url count];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
    cell.textLabel.text=url[indexPath.row];
    return cell;
}

 

 

Tiếp theo chúng ta cần gửi dữ liệu từ TableViewcontroller sang showViewController.

ở file showViewController.h ta một biến string lưu tên file gửi sang!!!.

@property(nonatomic,strong) NSString *urlstring;

TableViewcontroller.m :

chúng ta cần import showViewController.h vào để cho phép nhận dữ liệu ở view nào!

 

#import "showViewController.h"

 

Ta thêm đoạn mã sau để gửi tên file sang urlstring!

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if ([segue.identifier isEqualToString:@"show"]) {
        NSIndexPath *indexPath=[self.tableViewData indexPathForSelectedRow];
        showViewController *dest=segue.destinationViewController;
        dest.urlstring=url[indexPath.row];
    }
}

nếu các bạn đã theo dõi những bài viết của mình sẽ nắm rõ cách gửi dữ liệu qua View này!

Ở đây mình giải thích đơn giản lại như sau: đầu tiên xác định gửi đến Viewcontroller nào tiếp theo cho phép lấy indexpath của từng row!

Tiếp theo cho phép điaauf khiển gửi và cuối cùng nhận dữ liệu vào đâu!ok!

Như thế chúng ta đã gửi dữ liệu thành công!

Chúng ta xử lý thế nào từ  tên file có thể hiển thị thông tin lên webView!

trong file

showViewController.m

Do WebView load qua request mà request load qua url như vậy chúng ta viết hàm tạo url!

Do gọi file trong source code !nên ta sử dụng mainBundle. truyền vào tên file nó sẽ lấy đường dẫn chuẩn trong app!

-(NSURL*) fileName:(NSString *) urlstring{
    NSURL *urlFile =[[NSBundle mainBundle]URLForResource:urlstring withExtension:nil];
    return urlFile;
}

trả về url!

 

do WebView có thể hiện thị bất kỳ file ảnh text nào nên ta xử dụng webView!

nhấn vào nut chia sẻ Bar button item ánh xạ tạo action cho nó để khi click vào nút đó nó sẽ xuất hiện Air Drop chia sẻ!

ánh xạ webView để loadRequest!

@property (weak, nonatomic) IBOutlet UIWebView *webView;

- (IBAction)share:(id)sender;

 

Trong ViewDidload: thêm đoạn mã sau!

- (void)viewDidLoad {
    [super viewDidLoad];
    NSURL *urlRequest=[self fileName:self.urlstring];
    NSURLRequest *request=[[NSURLRequest alloc]initWithURL:urlRequest];
    [self.webView loadRequest:request];
}

Đoạn mã truyền vào url chuyển thành request , webView tải về request! và hiển thị trên Web View !!!

như vậy chúng ta đã hiển thị được ảnh, text trên webView!!!

Screen Shot 2016-05-12 at 15.24.41

 

Tuy nhiên chúng ta chưa làm gì với nút chia sẻ!

Trong IOS 7 trở lên Apple cung cấp lớp UIActivityViewController tạo Air Drop giúp việc gọi AirDrop đơn giản!!!

Có một điều tuyệt vời là khi các thiết bị chia sẻ dữ liệu với nhau chúng sẽ tự bắt được tập tin bên kia gửi sang là kiểu định dạng gì để cho phép gọi app hợp lý để mở chúng!

Air drop lúc chọn gửi đi xác định được tập tin gửi là kiểu định dạng gì ở đâu chính vì thế bên nhận rất dễ dàng đọc được!

Air drop chúng ta chỉ cần nói với nó :2 dòng lệnh chúng ta đã có thể gọi Airdrop! hệ thống sẽ tự xử lý hết thật tuyệt vời cho nhà pháp triển!

UIActivityViewController *controller=[[UIActivityViewController alloc] initWithActivityItems:url applicationActivities:nil];

dòng 1:Khai báo đối tượng  UIActivityViewController truyền vào các url tên file cần chia sẻ lưu trong một mảng url!

dòng2: khai báo một mảng chứa các thuộc tính không muốn chúng hiển thị trong Air drop!!!

NSArray *excludedActivitys=[[NSArray alloc] initWithObjects:UIActivityTypePostToFacebook, nil];
   //loại bỏ type
   controller.excludedActivityTypes=excludedActivitys;

và cuối cùng ta hiển thị controller đó lên!

[self presentViewController:controller animated:YES completion:nil];

Các bạn làm đúng các bước trên nó sẽ trông như thế này!

- (IBAction)share:(id)sender {
    //Lấy url cần chia sẻ
    NSURL *urlShare=[self fileName:self.urlstring];
    //loại bỏ type không cho phep share
    NSArray *url=@[urlShare];
    UIActivityViewController *controller=[[UIActivityViewController alloc] initWithActivityItems:url applicationActivities:nil];
    NSArray *excludedActivitys=[[NSArray alloc] initWithObjects:UIActivityTypePostToFacebook, nil];
    //loại bỏ type
    controller.excludedActivityTypes=excludedActivitys;
    //hiển thị viewcontroller hiện tại
    [self presentViewController:controller animated:YES completion:nil];
}

Chạy và biên dịch thử chúng ta có thể chia sẽ file ảnh hoặc text …

Screen Shot 2016-05-12 at 15.35.53

 

full mã nguồn bài này! link tải!

http://www.mediafire.com/download/7xcfp9o5jfuu176/Share.zip

 

có gì trong phần tiếp theo: mình sẽ giúp các bạn dùng file xib để thiết kế chương trình!!!

  • Nếu các bạn muốn biết thêm các kỹ thuật khác về ios, các bạn có thể tham khảo thêm các khóa học ios tại đây.

 

Add a Comment

Your email address will not be published. Required fields are marked *