Веб-расширение Safari для iOS: не удается установить связь с приложением Apple WatchIOS

Программируем под IOS
Ответить
Anonymous
 Веб-расширение Safari для iOS: не удается установить связь с приложением Apple Watch

Сообщение Anonymous »

Я создаю приложение для iOS, которое включает в себя Веб-расширение Safari и сопутствующее Приложение Apple Watch.

Моя цель проста: когда пользователь нажимает кнопку во всплывающем окне расширения Safari, я хочу отправить сообщение (например, текущую метку времени) на Apple Watch.
Настройка:
  • iOS 26.2 / Xcode 26.2
  • Цель 1: Основное приложение iOS (успешно активирует WCSession).
  • Цель 2: Веб-расширение Safari (манифест V3, с использованием SafariWebExtensionHandler).
  • Цель 3: Приложение Watch.
Проблема:

Хотя WatchConnectivity отлично работает из основного приложения iOS, при вызове из SafariWebExtensionHandler он сразу же завершается сбоем. Похоже, что процесс расширения изолирован таким образом, что не позволяет ему подключиться к демону Watch Connectivity Daemon (com.apple.wcd).
Триггер (JavaScript):

Логика Swift запускается через встроенный обмен сообщениями из всплывающего окна расширения (popup.js), когда пользователь нажимает кнопку. У меня включено разрешение «nativeMessaging» в моем манифесте.

Код: Выделить всё

// popup.js
browser.runtime.sendNativeMessage({ message: "sendTime" }, function(response) {
console.log("Response from Swift:", response);
});
Код (обработчик расширения):

Я использую Singleton для управления сеансом, чтобы избежать состояний гонки в течение короткого жизненного цикла расширения.

Код: Выделить всё

import SafariServices
import WatchConnectivity
import os.log

class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling, WCSessionDelegate {

func beginRequest(with context: NSExtensionContext) {
// ... extracting message from JS ...

if WCSession.isSupported() {
let session = WCSession.default
session.delegate = self
session.activate() // 

Подробнее здесь: [url]https://stackoverflow.com/questions/79865762/ios-safari-web-extension-communication-with-apple-watch-app-fails[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»