簡體   English   中英

分布式通知不再適用於 Catalina

[英]Distributed notification no longer working in Catalina

我使用分布式通知中心在 safari 擴展應用程序和 MacOS 應用程序之間傳輸數據。 我使用DistributedNotificationCenter.default().addObserver和特定的通知名稱,並使用相同的名稱從 MacOS 應用程序發布通知DistributedNotificationCenter.default().postNotificationName

我不斷attempt to post distributed notification 'nameofnotification' thwarted by sandboxing.

我在蘋果文檔中看到

沙盒應用程序只有在不包含字典時才能發送通知。 如果發送應用程序在應用沙盒中,則 userInfo 必須為零。

我的用戶信息不是零,但這在以前版本的 Mac 上運行良好。 我錯過了什么? 這是相對較新的嗎?

在擴展程序和應用程序之間進行通信的替代方法是什么? XPC 服務會起作用嗎?

更新

我已經按照蘋果的文檔實現了一個 XPC 服務,但是當我從 safari 擴展中調用它時,我收到此錯誤Couldn't communicate with a helper application. 我可以從嵌入 XPC 服務的應用程序中毫無問題地調用它。

我試圖:

  • 將服務復制到擴展的Contents/XPCServices
  • 添加一個應用程序組,並使用let connectionXPC = SXPCConnection.init(serviceName:"XXXXXXX.com.bundlename.XPCService")而不是let connectionXPC = NSXPCConnection.init(serviceName: "com.bundlename.XPCService")其中 XXXXXXX 是應用程序組。

關於如何從擴展應用程序正確使用 XPC 服務的任何想法,或任何其他方式在沙盒擴展程序和應用程序之間進行通信和發送數據。

在這種情況下 XPC 將不起作用。 與新型 Safari 擴展的通信應通過SFSafariExtensionHandler子類執行。

建議通過 Xcode 對應的模板創建 Safari Extension,所有重要的設置、Info.plist 字段和基礎結構都會為您設置。

請參閱官方構建 Safari 應用程序擴展中的良好文檔詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM