シミュレータのにユーザ権限(連絡先、写真、通知など)を設定するためのエンドツーエンドテストスイートのソリューションを作成しようとしています。これは、SpringBoardによって許可アラートが表示され、テストスイートに干渉するためです。BBSettingsGatewayを使用してBBSectionInfoを設定すると、不明な理由で失敗する
私はXCUITestスイートを使用しようとしましたが、SpringBoardアラートに関しては期待どおりに動作せず、一般的に使用するのには不便です。
私の考えは、オンデマンドでアクセス許可を設定するためにシステムファイルを変更することでした。私はTCCデータベースを見つけました。それはかなり簡単です。私は通知のアクセス許可が別のファイル、/Library/BulletinBoard/SectionInfo.plist
の下に保存されていることに気付きました。このファイルは、SpringBoardプロセスのBBServer
オブジェクトによってキャッシュされます。私はこのファイルを変更することができました。そして、SpringBoardが終了すると、ファイルへの変更が受け入れられます。しかし、私は、この変更がテスト済みのアプリケーションのプロセス実行時に発生するようにしたい。
掘り下げた後、私は、設定アプリケーション(環境設定)が通知設定を変更すると、XPC接続を使用して通知が変更されたことを通知することに気付きました。
私はテスト済みのプロセスで同じことを達成しようとしています。私は通知のすべての設定を含むBBSectionInfo
オブジェクトを作成し、内部でXPC接続を使用するBBSettingsGateway
を使用してこの変更をBulletinBoardサーバーに通知しようとします。これはうまくいかないので、私は何の誤りもないので、どうしていいか分からない。
おそらくそれは資格の問題ですか?私に迷惑をかけるのは、システムによってエラーが発生しないということです。ちょうどはありません。が発生します。
デバッガでは、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 }>
だから、すべてが良いようです。私は接続間で見つけることができる唯一の違いは、環境設定の過程で、状態はchecked in
ている間、私のプロセスでは、状態は、init-done
であるということである。
(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接続で十分な経験を持っていません多分私は何かを逃している? BBSettingsGateway
は独自の接続を管理しているように見え、接続を管理するための方法は公開されていません。
このソリューションはシミュレータ専用ですので、私は他の創造的な解決方法は気にしません。私は発見可能性のためにjailbreak
タグを追加しましたが、私はシミュレータ専用のソリューションを探しています。