2013-04-10 21 views
11

Tôi có một ứng dụng sử dụng khung ALAssets để truy cập thư viện ảnh của người dùng. Tôi đã viết một số mã phát hiện ứng dụng có quyền truy cập vào thư viện ảnh hay không và nếu không, tôi sẽ hiển thị thông báo cảnh báo cho phép người dùng bật dịch vụ vị trí cho ứng dụng trong cài đặt.Ứng dụng tự khởi động lại khi phát hiện thay đổi đối với cài đặt bảo mật

Sự cố là khi người dùng thay đổi cài đặt bảo mật theo cách thủ công và sau đó họ mở lại ứng dụng, iOS buộc ứng dụng gặp sự cố với SIGKILL.

Tôi nhận thấy rằng cách ứng dụng khác xử lý điều này là bằng cách nào đó phát hiện thay đổi trong cài đặt bảo mật và buộc ứng dụng khởi động lại vào lần tiếp theo người dùng mở nó. Có ai biết làm thế nào để thực hiện điều này?

Trả lời

12

Bạn hiểu nhầm điều gì đang xảy ra. Ứng dụng của bạn không bị lỗi (mặc dù ứng dụng có thể xuất hiện như vậy nếu bạn đang chạy ứng dụng với trình gỡ lỗi).

Khi bạn chuyển sang ứng dụng Cài đặt (và ứng dụng của bạn bị tạm dừng dưới nền) và thay đổi cài đặt bảo mật, các ứng dụng bị tạm ngừng sẽ bị chấm dứt. Khi bạn chuyển về ứng dụng của mình, nó chỉ đơn giản là bắt đầu lại. Điều này không khác với ứng dụng của bạn bị giết vì bất kỳ lý do nào khác.

Bạn có thể mã ứng dụng của mình để xử lý việc này bằng cách khôi phục trạng thái trước đó. Ứng dụng khác mà bạn nói về chỉ đơn giản là đưa người dùng trở về trạng thái trước đó. Nhiều ứng dụng thực hiện việc này. Nó không liên quan gì đến việc bị giết vì những thay đổi về quyền riêng tư. Ứng dụng sẽ khôi phục trạng thái khi bị giết vì bất kỳ lý do gì.

+0

Cảm ơn bạn. Khi tôi chạy ứng dụng từ xCode, giống như bạn nói, có vẻ như nó đã bị đóng băng. Nhưng khi tôi chạy các ứng dụng chỉ cần tắt của điện thoại, và sau đó thay đổi các thiết lập, các ứng dụng khởi động lại chính nó trong thời gian tới nó bắt đầu thay vì đóng băng. –

+0

Điều này có dành riêng cho Trình mô phỏng không? Tôi đã thử thay đổi quyền truy cập Twitter trên một thiết bị và nó không khiến ứng dụng Twitter của tôi bị giết. Nó trở lại từ nền như bình thường. –

+0

@CoDEFRo Khi gỡ lỗi thông qua Xcode, bạn cần phải nhấp vào nút Dừng sau khi ứng dụng gặp sự cố, sau đó bạn có thể khởi động lại ứng dụng đúng cách. – rmaddy

1

Bạn có thể kiểm tra xem bạn có được phép truy cập thư viện ảnh bằng cách sử dụng authorizationStatus class method của ALAssetsLibrary hay không. Bạn nên kiểm tra giá trị này trong một số phương pháp sẽ được gọi mỗi khi ứng dụng của bạn "mở" và cập nhật giao diện người dùng của bạn cho phù hợp.

+0

Đó chính xác là những gì tôi đang làm và khi tôi phát hiện ra nó, nếu nó không được ủy quyền, tôi yêu cầu người dùng thay đổi nó trong ứng dụng cài đặt. Khi họ đi và thay đổi nó, ứng dụng bị treo. –

+0

Bạn có thể đăng mã của phương thức gặp sự cố không? – bdesham

+0

Nó không thực sự là một phương pháp trong mã của tôi đang làm hỏng ứng dụng của tôi. Ứng dụng đang bị iOS đổ vỡ khi người dùng thay đổi cài đặt bên ngoài ứng dụng. Điều này giải thích: http://stackoverflow.com/questions/12652502/app-killed-by-sigkill-when-changing-privacy-settings –

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