Tôi muốn kiểm tra xem ứng dụng có chạy ẩn không.
Trong:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Tôi muốn kiểm tra xem ứng dụng có chạy ẩn không.
Trong:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Câu trả lời:
Đại biểu ứng dụng được gọi lại cho biết chuyển trạng thái. Bạn có thể theo dõi nó dựa trên đó.
Ngoài ra, thuộc tính applicationState trong UIApplication trả về trạng thái hiện tại.
[[UIApplication sharedApplication] applicationState]
[[UIApplication sharedApplication] applicationState] != UIApplicationStateActive
là tốt hơn, vì UIApplicationStateInactive gần như tương đương với nền tảng ...
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
//Do checking here.
}
Điều này có thể giúp bạn trong việc giải quyết vấn đề của bạn.
Xem bình luận bên dưới - không hoạt động là một trường hợp khá đặc biệt và có thể có nghĩa là ứng dụng đang trong quá trình được đưa vào nền trước. Điều đó có thể hoặc không có nghĩa là "nền" cho bạn tùy thuộc vào mục tiêu của bạn ...
Swift 3
let state = UIApplication.shared.applicationState
if state == .background {
print("App in Background")
}
Nếu bạn muốn nhận cuộc gọi lại thay vì "hỏi" về trạng thái ứng dụng, hãy sử dụng hai phương thức này trong AppDelegate
:
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"app is actvie now");
}
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"app is not actvie now");
}
nhanh 5
let state = UIApplication.shared.applicationState
if state == .background {
print("App in Background")
//MARK: - if you want to perform come action when app in background this will execute
//Handel you code here
}
else if state == .foreground{
//MARK: - if you want to perform come action when app in foreground this will execute
//Handel you code here
}
Swift 4+
let appstate = UIApplication.shared.applicationState
switch appstate {
case .active:
print("the app is in active state")
case .background:
print("the app is in background state")
case .inactive:
print("the app is in inactive state")
default:
print("the default state")
break
}
Tiện ích mở rộng Swift 4.0 để giúp truy cập tiện ích dễ dàng hơn một chút:
import UIKit
extension UIApplication {
var isBackground: Bool {
return UIApplication.shared.applicationState == .background
}
}
Để truy cập từ trong ứng dụng của bạn:
let myAppIsInBackground = UIApplication.shared.isBackground
Nếu bạn đang tìm kiếm thông tin về các quốc gia khác nhau ( active
, inactive
và background
), bạn có thể tìm thấy những tài liệu hướng dẫn của Apple ở đây .
locationManager:didUpdateToLocation:fromLocation:
phương pháp?