के लिए विफल रहता है। ऐसा करने का कारण यह है क्योंकि स्प्रिंगबोर्ड द्वारा अनुमति अलर्ट प्रदर्शित होते हैं, और वे परीक्षण सूट में हस्तक्षेप करते हैं।एक BBSettingsGateway का उपयोग कर BBSectionInfo स्थापना मैं उपयोगकर्ता अनुमतियों (संपर्क, फ़ोटो, सूचनाएं आदि) <strong>सिम्युलेटर</strong> पर स्थापित करने के लिए एक अंत से अंत परीक्षण सूट के लिए एक समाधान बनाने के प्रयास कर रहा हूँ स्पष्ट नहीं कारण
मैंने XCUITest सूट का उपयोग करने का प्रयास किया है, लेकिन यह स्प्रिंगबोर्ड अलर्ट के संबंध में अपेक्षित काम नहीं करता है, और सामान्य रूप से उपयोग करने के लिए असुविधाजनक है।
तो मेरा विचार मांग पर अनुमति सेट करने के लिए सिस्टम फ़ाइलों को संशोधित करना था। मुझे टीसीसी डेटाबेस मिला, और यह बहुत सरल लगता है। मैंने तब देखा कि अधिसूचना अनुमतियां एक अलग फ़ाइल, /Library/BulletinBoard/SectionInfo.plist
के तहत सहेजी जाती हैं। इस फ़ाइल को स्प्रिंगबोर्ड प्रक्रिया में BBServer
ऑब्जेक्ट द्वारा कैश किया गया है। मैं इस फ़ाइल को बदलने में कामयाब रहा, और यदि स्प्रिंगबोर्ड समाप्त हो गया है, तो फ़ाइल में परिवर्तन स्वीकार किए जाते हैं। लेकिन मैं चाहता हूं कि यह परिवर्तन परीक्षण ऐप की प्रक्रिया रनटाइम के दौरान हो।
कुछ खोदने के बाद, मैंने देखा कि जब सेटिंग ऐप (प्राथमिकताएं) अधिसूचना सेटिंग्स में परिवर्तन करता है, तो यह एक XPC कनेक्शन का उपयोग करता है ताकि यह सूचित किया जा सके कि इसमें बदलाव आया है।
मैं परीक्षण प्रक्रिया में एक ही चीज़ को पूरा करने की कोशिश कर रहा हूं। मैं BBSectionInfo
ऑब्जेक्ट बनाता हूं जिसमें अधिसूचनाओं के लिए सभी सेटिंग्स शामिल हैं, और BBSettingsGateway
का उपयोग करके इस परिवर्तन के बुलेटिनबोर्ड सर्वर को सूचित करने का प्रयास करें, जो आंतरिक रूप से XPC कनेक्शन का उपयोग करता है। यह काम नहीं करता है, और मुझे यकीन नहीं है कि क्यों नहीं, क्योंकि मुझे कोई त्रुटि नहीं मिली है।
शायद यह एक एंटाइटेलमेंट मुद्दा है? मुझे परेशान करता है कि सिस्टम द्वारा कोई त्रुटि नहीं दी जाती है, बस कुछ भी नहीं होता है।
डिबगर में, XPC कनेक्शन लाने, मैं इस मिल:
(lldb) po [inv.target valueForKey:@“connection”]
<NSXPCConnection: 0x60000011bcf0> connection to service named com.apple.bulletinboard.settingsconnection
आंतरिक कनेक्शन भी किसी भी मुद्दे का खुलासा नहीं करता:
(lldb) po [[inv.target valueForKey:@"connection"] valueForKey:@"xpcConnection"]
<OS_xpc_connection: connection[0x6000001a6200]: { refcnt = 2, xrefcnt = 1, name = com.apple.bulletinboard.settingsconnection, type = named, state = init-done, error = 0x0 mach = true, privileged = false, bssend = 0x6f07, recv = 0x6d0b, send = 0x7003, pid = 0, euid = 4294967295, egid = 4294967295, asid = 4294967295 } <connection: 0x6000001a6200> { name = com.apple.bulletinboard.settingsconnection, listener = false, pid = 0, euid = 4294967295, egid = 4294967295, asid = 4294967295 }>
तो सब अच्छा लगता है।
(lldb) po [[[QuietHoursStateController sharedController] bbGateway] valueForKey:@"connection"]
<NSXPCConnection: 0x6180001160b0> connection to service named com.apple.bulletinboard.settingsconnection
(lldb) po [[[[QuietHoursStateController sharedController] bbGateway] valueForKey:@"connection"] valueForKey:@"xpcConnection"]
<OS_xpc_connection: connection[0x6180001a3fe0]: { refcnt = 2, xrefcnt = 1, name = com.apple.bulletinboard.settingsconnection, type = named, state = checked in, error = 0x0 mach = true, privileged = false, bssend = 0x9d03, recv = 0x9817, send = 0x9e03, pid = 17877, euid = 26053515, egid = 20, asid = 100046 } <connection: 0x6180001a3fe0> { name = com.apple.bulletinboard.settingsconnection, listener = false, pid = 17877, euid = 26053515, egid = 20, asid = 100046 }>
मैं XPC कनेक्शन के साथ पर्याप्त अनुभव नहीं है, तो: फर्क सिर्फ इतना है कि मैं कनेक्शन के बीच मिल सकता है कि मेरी इस प्रक्रिया में, राज्य init-done
है, जबकि पसंद की प्रक्रिया में, राज्य checked in
है हो सकता है कि मुझसे कुछ छूट रहा हो? BBSettingsGateway
अपने स्वयं के कनेक्शन का प्रबंधन करने के लिए प्रतीत होता है, और यह कनेक्शन के प्रबंधन के लिए किसी भी तरीके का खुलासा नहीं करता है।
मुझे अन्य रचनात्मक समाधानों पर कोई ध्यान नहीं है, क्योंकि यह समाधान केवल सिम्युलेटर के लिए है। मैंने खोज के लिए jailbreak
टैग जोड़ा है, लेकिन मैं सिम्युलेटर-केवल समाधान ढूंढ रहा हूं।