ฉันต้องการตรวจสอบว่าแอปทำงานในพื้นหลังหรือไม่
ใน:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
ฉันต้องการตรวจสอบว่าแอปทำงานในพื้นหลังหรือไม่
ใน:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
คำตอบ:
ผู้แทนแอปได้รับการเรียกกลับแสดงสถานะการเปลี่ยนผ่าน คุณสามารถติดตามมันได้
ด้วยคุณสมบัติapplicationStateใน UIApplication จะคืนค่าสถานะปัจจุบัน
[[UIApplication sharedApplication] applicationState]
[[UIApplication sharedApplication] applicationState] != UIApplicationStateActive
ดีกว่าเนื่องจาก UIApplicationStateInactive เกือบเทียบเท่ากับพื้นหลัง ...
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
//Do checking here.
}
นี่อาจช่วยคุณในการแก้ปัญหาของคุณ
ดูความคิดเห็นด้านล่าง - ไม่ได้ใช้งานเป็นกรณีพิเศษพอสมควรและอาจหมายความว่าแอพกำลังอยู่ระหว่างการเปิดตัวในส่วนหน้า นั่นอาจจะใช่หรือไม่ใช่ความหมาย "ภูมิหลัง" ของคุณก็ได้ขึ้นอยู่กับเป้าหมายของคุณ ...
สวิฟท์ 3
let state = UIApplication.shared.applicationState
if state == .background {
print("App in Background")
}
รุ่น Swift:
let state = UIApplication.sharedApplication().applicationState
if state == .Background {
print("App in Background")
}
หากคุณต้องการรับการติดต่อกลับแทน "ถาม" เกี่ยวกับสถานะแอปพลิเคชันให้ใช้สองวิธีนี้ในAppDelegate
:
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"app is actvie now");
}
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"app is not actvie now");
}
รวดเร็ว 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
}
ส่วนขยาย Swift 4.0 เพื่อให้เข้าถึงได้ง่ายขึ้น:
import UIKit
extension UIApplication {
var isBackground: Bool {
return UIApplication.shared.applicationState == .background
}
}
วิธีเข้าถึงจากภายในแอปของคุณ:
let myAppIsInBackground = UIApplication.shared.isBackground
หากคุณกำลังมองหาข้อมูลเกี่ยวกับรัฐต่างๆ ( active
, inactive
และbackground
), คุณสามารถหาเอกสารแอปเปิ้ลที่นี่
locationManager:didUpdateToLocation:fromLocation:
วิธีการ?