2016-02-09 30 views
7

Tôi đã nghiên cứu về cách chia sẻ dữ liệu giữa các ứng dụng một cách an toàn. Tôi muốn nhận được một số thông tin về cách chính xác để xử lý này trước khi tôi làm một lặn sâu vào thực hiện bằng cách sử dụng phương pháp sai. Chỉ vì bạn có thể làm điều gì đó không nhất thiết có nghĩa là bạn nên làm.Chia sẻ dữ liệu tệp giữa các ứng dụng trong Swift/iOS

Trường hợp người dùng: Tôi đang làm việc trên bộ ứng dụng học ngôn ngữ có cơ sở tệp âm thanh được chia sẻ hàng trăm tệp âm thanh và tệp json chứa dữ liệu quan trọng tương ứng với ngôn ngữ. Tôi muốn cho phép người dùng không phải tải xuống lại gói ngôn ngữ khi họ sử dụng một ứng dụng khác trong bộ ứng dụng của chúng tôi.

1. Extensions App - Nhà cung cấp tài liệu Non-UI Ngôn ngữ địa phương

Theo documentation:

Nhà cung cấp tập tin tài trợ mở rộng quyền truy cập vào các file bên ngoài sandbox các ứng dụng máy chủ với lúc mở cửa và di chuyển hành động. Tiện ích mở rộng này (đôi khi được rút ngắn tại đây cho nhà cung cấp tệp) cũng cho phép ứng dụng máy chủ tải xuống tệp mà không trình bày bộ điều khiển chế độ xem bộ chọn tài liệu. Tính năng này cho phép ứng dụng máy chủ truy cập tài liệu đã mở trước đó bằng dấu trang URL an toàn, ngay cả khi các tệp đó không còn được lưu trữ trên thiết bị nữa.

Trên bề mặt, điều này có vẻ như là một giải pháp thực sự vững chắc. Mối quan tâm chính của tôi xuất phát từ hai dòng cuối cùng, nơi nó nói rằng ứng dụng có thể tải xuống các tệp không còn được lưu trữ trên thiết bị nữa. Tôi muốn các tệp được lưu trữ cục bộ trên thiết bị để tránh tải xuống liên tục. Nếu Nhà cung cấp tài liệu lưu trữ các tệp cục bộ và cho phép các ứng dụng khác nhau trong nhóm truy cập các tệp, thì tôi nghĩ rằng điều này có thể hoạt động.

2. Shared Keychain Access

Cho phép bạn lưu trữ một cách an toàn dữ liệu đến một keychain chia sẻ rằng các ứng dụng khác là một phần của một bộ các ứng dụng có thể truy cập. Tất cả các ứng dụng chia sẻ quyền truy cập keychain phải sử dụng cùng một tiền tố ID ứng dụng. Ví dụ về truy cập keychain được chia sẻ đang hoạt động.

Tôi đã tìm hiểu một chút về tài liệu này và tôi nghĩ điều này có thể phù hợp nhất. Mối quan tâm chính của tôi đối với giải pháp này là liệu có giới hạn kích thước cho dữ liệu được tải lên hay không và các loại tệp mp3/ogg/json có được phép hay không. Hầu hết các ví dụ/sử dụng tôi đã tìm thấy với điểm giải pháp này để chia sẻ chuỗi và dữ liệu nhỏ, tôi không chắc chắn nếu nó sẽ xử lý dữ liệu lớn như json hoặc các tập tin âm thanh.

Tôi cũng thấy this repo mà dường như làm cho đối phó với Keychain dễ dàng hơn:

3. Tuỳ chỉnh Pasteboards

Tục tông là tốt nhất cho mục đích của dữ liệu tùy chỉnh chia sẻ-tư nhân bán giữa hai ứng dụng . Custom pasteboards được xác định bằng cách sử dụng tên duy nhất. Chúng có thể lưu giữ dữ liệu ngoài ứng dụng tạo ra chúng, cho phép một tấm bảng để giữ dữ liệu sau khi ứng dụng bị chấm dứt hoặc thậm chí sau khi khởi động lại thiết bị.

Khi viết hoặc đọc dữ liệu đến và từ một bảng, bạn phải chỉ định loại bảng tham chiếu.Các loại bảng thông thường thường sử dụng một định danh kiểu đồng nhất (UTI) để xác định loại dữ liệu đi vào và được lấy ra từ bảng. Xem tài liệu Tham khảo Lớp UIPasteboard của Apple để biết thêm thông tin.

Trên tài liệu kéo từ this post

mối quan tâm chính của tôi với giải pháp này là có lẽ nó là một chút của một hack. Về mặt logic, một tấm bảng có vẻ giống như một cái gì đó tạm thời giữ dữ liệu và cho phép chia sẻ giữa các ứng dụng, trong khi giải pháp mà tôi đang tìm kiếm cần phải là giải pháp lâu dài hơn.


Tôi đánh giá cao mọi thông tin về các phương pháp hay nhất để chia sẻ các loại tệp này giữa các ứng dụng. Tôi cho rằng có rất nhiều giải pháp khác mà tôi đã bỏ qua ở đây, vì vậy nếu có một giải pháp thay thế tốt hơn, tôi sẽ yêu một số thông tin về nó. Nếu một trong những giải pháp được liệt kê tôi đã đặt ở đây là cách tốt để giải quyết vấn đề này, tôi muốn có thêm thông tin về trải nghiệm của bạn khi làm việc với họ và nếu mối quan tâm của tôi với họ là hợp lệ hoặc không có gì phải lo lắng .

Thx trước. Như mọi khi, các câu trả lời bằng văn bản tốt sẽ nhận được phiếu bầu;)

+1

Các bài tham chiếu hoạt động hoàn hảo. Cảm ơn bạn, xin lỗi vì trùng lặp. – Unome

+0

bạn được chào đón –

Trả lời

1

Tôi tin rằng cách tiếp cận tốt nhất là bật chia sẻ dữ liệu bằng cách thiết lập nhóm ứng dụng. Đây là giải pháp được đề xuất của Apple để chia sẻ dữ liệu giữa các ứng dụng và tiện ích, và tôi tin rằng để chia sẻ dữ liệu giữa các ứng dụng nói chung.

Xem phần "Sharing Data with Your Containing App"

Cũng xem "Adding an App to an App Group":

Các vấn đề liên quan