12/08/2018, 14:10

Tạo ứng dụng mở rộng chia sẻ đơn giản cho iOS

Share extensions, được giới thiệu trong iOS 8, cung cấp cho người dùng một cách dễ dàng và thuận tiện để chia sẻ nội dung với các thực thể khác, chẳng hạn bạn muốn chia sẻ URL khi dùng safari. Với share extensions, người dùng có thể chia sẻ nội dung trực tiếp cho dịch vụ của bạn từ app họ đang ...

Share extensions, được giới thiệu trong iOS 8, cung cấp cho người dùng một cách dễ dàng và thuận tiện để chia sẻ nội dung với các thực thể khác, chẳng hạn bạn muốn chia sẻ URL khi dùng safari. Với share extensions, người dùng có thể chia sẻ nội dung trực tiếp cho dịch vụ của bạn từ app họ đang dung, có thể là safari, hình ảnh hoặc app khác. Bất kỳ ứng dụng tùy chỉnh mà trình bày một thể hiện của lớp UIActivityViewController sẽ có thể nhìn thấy phần mở rộng chia sẻ của bạn nếu bạn xây dựng mở rộng của bạn để nó có thể xử lý các loại tập tin được cung cấp bởi ứng dụng đó.

Chúng tôi sẽ xây dựng một phần mở rộng chia sẻ rằng chia sẻ hình ảnh đến một trang web mạng xã hội. Để đơn giản, chúng tôi sẽ sử dụng Imgur cho điều này vì nó cho phép người dùng tải lên các hình ảnh ẩn danh (không có hình ảnh được liên kết với một tài khoản).

How the Demo App Works

Ứng dụng là một ứng dụng đơn giản được gọi là ImgurShare mà người dùng có thể sử dụng để upload hình ảnh lên Imgur. Tôi sẽ cung cấp các hướng dẫn về việc nó đã sẵn sàng để chạy, nhưng trước tiên hãy để tôi đưa ra một tổng quan về các ứng dụng.

Xem gốc của nó là một xem bảng liệt kê các danh hiệu chúng tôi cung cấp cho đến những hình ảnh được tải lên Imgur.

image01.png

Để tải lên một hình ảnh, hãy nhấp vào nút + trong thanh điều hướng và bạn sẽ được trình bày với một cái nhìn cho phép bạn chọn một hình ảnh, nhập tiêu đề cho hình ảnh và tải lên Imgur.

image02.png

Sau khi tải lên các hình ảnh, khi bạn quay trở lại để xem bảng, tiêu đề của hình ảnh được tải lên sẽ được liệt kê. Khi bạn chọn một mục trên bảng xem, bạn sẽ được hiển thị các hình ảnh được tải lên và liên kết của nó trên Imgur. Để đơn giản, tôi đã không bao gồm chỉnh sửa và xóa các chức năng.

image03.png

Có một nút URL Copy trên thanh điều hướng của quan điểm này, mà bạn có thể sử dụng để sao chép URL của hình ảnh vào clipboard. Bạn có thể kiểm tra nó ra bằng cách sao chép URL, mở Safari và dán vào các liên kết. Bạn sẽ nhìn thấy hình ảnh đã tải lên trên Imgur.

image04.png

Creating the Share Extension

Mở AddImageViewController.swift và trong phương thức shareImage(imageTitle;,imageToUpload:), thay đổi định danh để kết nối với nhóm mà bạn vừa tạo

config.sharedContainerIdentifier = "group.com.appcoda.ImgurShare"

Open ImageService.swift và thực hiện theo luồng như vậy với tempContainerURL(image:,name:)

if let containerURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.com.appcoda.ImgurShare")

Thực hiện tương tự với phương thức getFileUrl() trong cùng class

if let containerUrl = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.com.appcoda.ImgurShare")

Tiếp theo chúng ta sẽ tạo Share extension. Chọn ImgurShare project, chọn Editor > Add Target > iOS > Application Extension > Share Extension.

image13.png

Trong màn hình tiếp theo, thiết lập tên Target, ImgurUpload và để trống những field còn lại. Chọn Finish để kết thúc quá trình.

image14.png

Tiếp tục, cấp hình App Group cho target ImgurlUpload. Chọn ImgurShare project trong Project Navigator và chọn target ImgurUpload. Chọn cửa sổ Câpbilities, bật chế độApp Groups và chọn group đã tạo trước đó cho target ImgurShare.

image15.png

Để có thể chia sẻ mã giữa extensions và app chứa nó, ta đặt mã vào trong framework. Chúng ta cần kết nối nó với target ImgurUpload.

Với target ImgurUpload đã được chọn, mở tab Gernal, chọn button + phía dưới Linked Frameworks và chọn Libraries. CHọn ImgurKit.framework sau đó chọn Add.

image16.png

Với thiết lập trên, bây giờ chúng ta nhìn vào những file đã được tạo ra. Mở rộng group ImgurUpload và bạn sẽ thấy file storyboard, 1 file entitlements, và 1 view controller và file plist bên trong group Supporting Files. File Entitlements trong extension, chỉ như là trong app chứa nó, được tạo ra khi bạn cấu hình App Groups. NÓ nắm giữ chỉ tiết App group của bạn.

Bạn có thể sử dụng file storyboard để tạo một giao diện tinh chỉnh nhưng Share extension đã có 1 giao diện mặc định mà ta có thể sử dụng. Nó là giao diện giôgns như view tuỳ chỉnh giống như khi chia sửa thứ gì đó lên Twitter hoặc Facebook.

Chúng ta cần phải xác định loại nội dung mở rộng của chúng tôi hỗ trợ bằng cách thiết lập quy tắc kích hoạt của nó trong file plist. Mở Info.plist và mở rộng chính NSExtension. Sau đó mở rộng phím NSExtensionAttributes để đến NSExtensionActivationRule. Theo mặc định, điều này được thiết lập để TRUEPREDICATE có nghĩa là mở rộng của bạn sẽ luôn luôn được cung cấp khi người dùng muốn chia sẻ nội dung. Bạn cần phải thay đổi điều này và làm cho nó cụ thể nếu bạn muốn ứng dụng của bạn được chấp thuận của App Store. Thay đổi loại hình của nó vào từ điển và thêm một cặp khóa-giá trị mới. Đặt tên chìa khóa để NSExtensionActivationSupportsImageWithMaxCount, gõ vào số lượng và giá trị 1. Điều này quy định rằng các mở rộng hỗ trợ chia sẻ một hình ảnh duy nhất tại một thời điểm.

image17.png

Nhìn vào class ShareViewController, bạn sẽ tìm thấy các phương thức sơ khai

  • isContentValid () - Đây là nơi người sử dụng đầu vào được xác nhận. Bạn xác nhận đầu vào văn bản cũng như các nội dung được chia sẻ và trả về true nếu xác nhận đi. Các nút Đăng trên xem soạn sẽ vẫn còn tàn tật cho đến khi sự thật được trả về.
  • didSelectPost () - Đây được gọi là sau khi người dùng chạm vào nút Đăng và nó là ở đây mà bạn đăng tải các nội dung được chia sẻ. Sau khi upload lên kế hoạch, bạn phải gọi completeRequestReturningItems ([], completionHandler             </div>
            
            <div class=
0