2013-08-29 37 views
40

Bắt đầu với iOS 7, API đa nhiệm của Apple cho phép ứng dụng chạy trong ba Chế độ nền mới: Tìm nạp nền, Nội dung thông báo từ xa và Dịch vụ chuyển nền. Apple cũng cung cấp cho người dùng iOS khả năng kiểm soát xem tất cả các ứng dụng có được phép chạy trong nền hay cho dù các ứng dụng riêng lẻ có thể chạy trong nền hay không (Cài đặt> Chung> Làm mới ứng dụng nền). Có cách nào để ứng dụng của tôi có thể phát hiện chương trình cho dù người dùng đã tắt khả năng làm mới của ứng dụng của tôi trong nền không?Phát hiện cài đặt người dùng cho Làm mới ứng dụng nền trong iOS 7

Trả lời

69

đây là những gì bạn đang tìm kiếm.

if ([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusAvailable) { 

    NSLog(@"Background updates are available for the app."); 
}else if([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusDenied) 
{ 
    NSLog(@"The user explicitly disabled background behavior for this app or for the whole system."); 
}else if([[UIApplication sharedApplication] backgroundRefreshStatus] == UIBackgroundRefreshStatusRestricted) 
{ 
    NSLog(@"Background updates are unavailable and the user cannot enable them again. For example, this status can occur when parental controls are in effect for the current user."); 
} 
+2

Cảm ơn, đó là hữu ích. Tuy nhiên, bạn có thể nhận xét về câu hỏi phụ thuộc của tôi trong lĩnh vực này không - http://stackoverflow.com/questions/19235183/uiapplicationbackgroundrefreshstatusdidchangenotification-usage-without-correspo – Ashok

+0

Xin chào, đã gọi phương thức thiS. Trong nền không gọi được –

+0

Tôi ' m đoán nền appRefresh không có gì để làm với các thông báo im lặng là phải không? – Honey

8

Kiểm tra thuộc tính backgroundRefreshStatus của UIApplication. Sau đây là trích dẫn từ tài liệu apple.

Thuộc tính này phản ánh liệu ứng dụng có thể được đưa vào nền để xử lý các hành vi nền, chẳng hạn như xử lý cập nhật vị trí nền và thực hiện tải nền. Nếu ứng dụng của bạn dựa vào việc được khởi chạy vào nền để thực hiện các tác vụ, bạn có thể sử dụng giá trị của thuộc tính này để xác định xem có làm như vậy hay không và cảnh báo người dùng nếu không. Không cảnh báo người dùng nếu giá trị của thuộc tính này được đặt thành UIBackgroundRefreshStatusRestricted; người dùng bị hạn chế không có khả năng bật đa nhiệm cho ứng dụng.

3

Cập nhật cho Swift 3 và iOS10:

switch UIApplication.shared.backgroundRefreshStatus { 
case .available: 
    print("Refresh available") 
case .denied: 
    print("Refresh denied") 
case .restricted: 
    print("Refresh restricted") 
} 
Các vấn đề liên quan