खोलने के बिना आज एक्सटेंशन (विजेट) से होस्ट ऐप में कार्रवाई करें, मैं आज एक्सटेंशन (विजेट) से ऐप रखने में कुछ क्रियाएं प्रबंधित करना चाहता हूं।ऐप आईओएस
पूर्ण विवरण: मेरे युक्त ऐप में, कुछ क्रिया (जैसे प्ले/पॉज़ ऑडियो) प्रदर्शन करते हैं। और आज भी विस्तार (विजेट) से उस क्रिया को प्रबंधित करना चाहते हैं। पृष्ठभूमि स्थिति में भी एक कार्रवाई जारी है।
आज के विस्तार में, वही कार्यवाही करेगा। इसलिए इसके लिए, यदि मुख्य युक्त ऐप में पहले से ही कोई कार्रवाई शुरू होती है और इसे पृष्ठभूमि स्थिति में भेजती है, तो उपयोगकर्ता किसी विजेट से कार्रवाई रोक सकता है। और उपयोगकर्ता विजेट (आज एक्सटेंशन) से किसी भी समय कार्रवाई शुरू/रोक सकता है।
इस लक्ष्य को प्राप्त करने के लिए मैंने ऐप समूह क्षमता के साथ UserDefault का उपयोग किया और एक बूलियन मान स्टोर किया। जब विजेट मौजूद होता है तो यह बूलियन मान की जांच करता है और सेट बटन स्टेट प्ले/पॉज़ सेट करता है। यह सही ढंग से सेट है लेकिन जब मैं एक्सटेंशन बटन एक्शन दबाता हूं तो होस्ट ऐप में प्रदर्शन नहीं करता है।
कोड:
मुख्य युक्त एप्लिकेशन कोड
override func viewDidLoad() {
super.viewDidLoad()
let objUserDefault = UserDefaults(suiteName:"group.test.TodayExtensionSharingDefaults")
let objTemp = objUserDefault?.object(forKey: "value")
self.btnValue.isSelected = objTemp
NotificationCenter.default.addObserver(self, selector: #selector(self.userDefaultsDidChange), name: UserDefaults.didChangeNotification, object: nil)
}
func userDefaultsDidChange(_ notification: Notification) {
let objUserDefault = UserDefaults(suiteName: "group.test.TodayExtensionSharingDefaults")
objUserDefault?.synchronize()
let objTemp = objUserDefault?.object(forKey: "value")
self.btnValue.isSelected = objTemp
}
में विस्तार कक्षा में:
@IBAction func onPlayPause(_ sender: UIButton) {
DispatchQueue.main.async {
let sharedDefaults = UserDefaults(suiteName: "group.test.TodayExtensionSharingDefaults")
if let isPlaying = sharedDefaults?.bool(forKey: "isPlaing") {
sharedDefaults?.set(!isPlaying, forKey: "isPlaying")
}else{
sharedDefaults?.set(false, forKey: "isPlaying")
}
sharedDefaults?.synchronize()
}
अधिसूचना निकाल दिया जब कोई उपयोगकर्ता अपडेट डिफ़ॉल्ट नहीं किया गया। जब ऐप पुनरारंभ होता है तो यह अद्यतन मूल्य है।
तो इस समस्या को हल करने के लिए कैसे?
और वही चीज एप को विजेट में रखने के विपरीत तरीकों से करना चाहती है। (उपयोगकर्ता एकल क्रिया ऑब्जेक्ट के लिए आसान है लेकिन कैसे?)
और ऐप खोलने के बिना एक्सटेंशन से ऐप रखने में त्वरित कार्रवाई करने का कोई अन्य तरीका है?
आप कहाँ अपनी अधिसूचना फायरिंग कर रहे हैं? – karthikeyan