Im после Руководство по использованию Apple Safari для приложений. Короче говоря, Ive:
- Создал новый проект Xcode (в Xcode 8.1, на macOS 10.12 Sierra) с использованием шаблона Cocoa
- Создана новая цель в приложении с использованием шаблона расширения Safari
- Запустите приложение один раз, чтобы убедиться, что расширение приложения Safari создано
- Выбрал опцию "Разрешить неподписанные расширения" в меню "Настройка Safari"
- Включить расширение в панели предпочтений Safaris Extensions
В Safari появится кнопка панели расширения. Ярлык говорит, что я должен увидеть сообщение NSLog в консоли, когда я нажимаю кнопку на панели инструментов, но я ничего не вижу.
Ive отредактировал SafariExtensionHandler.swift, чтобы отправить сообщение в script, введенное расширением:
override func toolbarItemClicked(in window: SFSafariWindow) {
// This method will be called when your toolbar item is clicked.
NSLog("The extension toolbar item was clicked")
window.getActiveTab(completionHandler: { (activeTab) in
activeTab?.getActivePage(completionHandler: { (activePage) in
activePage?.dispatchMessageToScript(withName: "toolbarItemClicked", userInfo: nil)
})
})
}
И Ive отредактировал введенный script (script.js), чтобы предупредить это сообщение:
safari.self.addEventListener("message", function (event) {
alert("We got a message from the extension! - " + event.name + ": " + event.message);
});
Предупреждение появляется, когда я нажимаю кнопку на панели инструментов (когда Im на странице на webkit.org, так как Ive оставил в настройках SFSafariWebsiteAccess по умолчанию), поэтому расширение работает и регистрирует щелчок. Но я не вижу NSLog в консоли Xcodes или в приложении консоли.
Im реальный новичок Xcode, поэтому Im Im Im пропустил что-то очевидное - но почему сообщение NSLog не появляется на консоли?
(Я не запускаюсь как администратор, в случае, если это имеет значение, хотя я и вводил данные учетной записи администратора каждый раз, когда меня просили при запуске Xcode в первый раз. Я замечаю, что в приложении консоли, когда я выберите system.log, я просто вижу сообщение "Невозможно прочитать файл". Этот может быть связан с тем, что он не работает как администратор).