स्थिति:पृष्ठभूमि में साथी घड़ी ऐप से मुख्य आईओएस ऐप कैसे शुरू करें?
के बाद से हमारे उपयोगकर्ताओं 4 के लिए 11 और/या WatchOS करने के लिए अपने आईओएस अद्यतन किया है, हमारे iOS एप्लिकेशन जब एप्लिकेशन हमारे WatchOS एप्लिकेशन द्वारा प्रारंभ हो जाता है कोई भी शेड्यूल टाइमर आग नहीं लगती। हो सकता है कि हम वॉचोज़ ऐप से हमारा मुख्य ऐप शुरू करते समय कुछ गलत कर रहे हों।
प्रसंग & कोड:
हमारे WatchOS एप्लिकेशन को उपयोगकर्ता शुरुआत देता है कि एक साथी अनुप्रयोग है/एक बटन दबाने से पृष्ठभूमि में हमारे iPhone एप्लिकेशन बंद करो। हम का उपयोग करके ऐसा:, सभी
func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
if let actionNumber : NSNumber = message[WatchActions.actionKey()] as? NSNumber {
if let watchAction : WatchActions = WatchActions(rawValue: actionNumber.intValue) {
switch(watchAction) {
case .isAppActive:
let result = BaseController.sharedInstance.sleepAndWakeUpController.isAwake()
replyHandler([WatchActions.resultKey() : NSNumber.init(value: result as Bool)])
return
case .startApp:
AudioController.sharedInstance().playActivatedSound()
let isRunningOnForeground = ApplicationStateHelper.isActive()
if isRunningOnForeground == false {
BaseController.sharedInstance.start(inBackground: true)
}
let result = true
replyHandler([WatchActions.resultKey() : NSNumber.init(value: result as Bool)])
DDLogInfo("[APPLE WATCH] [didReceiveMessage] [.startApp]")
return
}
}
}
replyHandler([WatchActions.resultKey() : NSNumber.init(value: false as Bool)])
return
}
सब कुछ पहले की तरह काम करने लगता है, हम सही ढंग से GPS स्थानों मिलती है:
func startMainApp() {
guard WCSession.default().isReachable == true else {
print("Watch is not reachable")
return
}
var data = [String : AnyObject]()
data[WatchActions.actionKey()] = NSNumber.init(value: WatchActions.startApp.rawValue as Int)
WCSession.default().sendMessage(data, replyHandler: { (result: [String : Any]) in
let resultNumber = result[WatchActions.resultKey()] as? NSNumber
let resultBool = resultNumber!.boolValue
if resultBool == true {
self.setModeActivated()
} else {
self.setModeActivationFailed()
}
}) { (error: Error) in
if (error as NSError).code != 7012 {
print("start app error: \(error.localizedDescription)")
self.setModeActivationFailed()
}
}
}
तो हमारी मुख्य अनुप्रयोग में, हम संदेश प्राप्त होता है और हमारे आधार नियंत्रक शुरू हमारी प्रक्रियाएं शुरू हो जाती हैं, हालांकि, Timer
ऑब्जेक्ट्स जो प्रारंभ हो जाती हैं, आग नहीं लगती हैं।
यह आईओएस 10 पर पूरी तरह से काम करता है, इसलिए मुझे संदेह है कि आईओएस 11 पृष्ठभूमि राज्यों के साथ ऐसा कुछ है जो अलग-अलग काम करता है। हालांकि, मुझे इसका कोई दस्तावेज नहीं मिल रहा है।
अतिरिक्त जानकारी:
- आईओएस 10, जब हम अपने मुख्य अनुप्रयोग इस तरह से शुरू कर दिया पर, ऐप्स iPhone पर बहु-कार्य दृश्य में दिखाई देता हो गया। अब आईओएस 11 पर, यह मल्टीटास्क दृश्य में दिखाई नहीं दे रहा है, हालांकि यह पृष्ठभूमि पर चलता है। मैं सफलतापूर्वक स्थानीय नोटिफिकेशन देखता हूं जो मैं पृष्ठभूमि पर शेड्यूल करता हूं, मैं सक्रिय कोड के माध्यम से डीबग कर सकता हूं और ऐप आइकन टैप करते समय, ऐप तुरंत उपलब्ध होता है।
- हमारे वॉचोज़ ऐप में 2.0
- पर डिबग किए गए डिवाइस के साथ एक्सकोड के माध्यम से डीबग -> पीआईडी या नाम से अटैचमेंट -> ऐप नाम दर्ज किया गया है। फिर ऐप्पल वॉच और डीबग से हमारा ऐप शुरू करें।
- reproducable आईओएस 11.0.3 पर iPhone पर WatchOS 4,0 6
सवालों के साथ: सबसे अच्छा तरीका घड़ी app से हमारे मुख्य अनुप्रयोग शुरू करने के लिए क्या है? पृष्ठभूमि राज्यों के संबंध में आईओएस 11/वॉचोस 4 में कुछ बदल गया है? क्या मुझे इसका दस्तावेज मिल सकता है? क्या यह एक आईओएस बग हो सकता है?
आप टाइमर का काम नहीं करते हैं, लेकिन आपके द्वारा साझा किया गया कोड में टाइमर का उदाहरण नहीं है जो आग नहीं करता है। –