2016-12-08 18 views
7

Podążam za Apple’s guide for creating a Safari App Extension. Krótko mówiąc, mam:Dlaczego moje komunikaty NSLog rozszerzenia aplikacji Safari nie są wyświetlane w konsoli Xcode?

  • Utworzono nowy projekt Xcode (w Xcode 8.1 na MacOS 10.12 Sierra) przy użyciu szablonu kakao Application
  • Utworzono nowy cel w aplikacji za pomocą szablonu Safari Extension
  • Uruchom aplikację raz, aby upewnić się, że rozszerzenie Safari App jest zbudowany
  • Wybrano opcję „zezwalaj na niepodpisane Extensions” w Safari Develop menu
  • umożliwiło rozszerzenie w rozszerzeniach safari w panelu preferencji

Przycisk paska narzędziowego rozszerzenia pojawia się w Safari. Przewodnik Apple mówi, że powinienem zobaczyć komunikat NSLog w konsoli po kliknięciu przycisku paska narzędzi, ale nic nie widzę.

Mam edytowany SafariExtensionHandler.swift aby wysłać wiadomość do skryptu wtryskiwanego przez rozszerzenie:

override func toolbarItemClicked(in window: SFSafariWindow) { 
    // This method will be called when your toolbar item is clicked. 
    NSLog("The extension's toolbar item was clicked") 

    window.getActiveTab(completionHandler: { (activeTab) in 
     activeTab?.getActivePage(completionHandler: { (activePage) in 
      activePage?.dispatchMessageToScript(withName: "toolbarItemClicked", userInfo: nil) 

     }) 
    }) 
} 

A ja redagował wstrzykuje skrypt (script.js) ostrzega, że ​​wiadomość:

safari.self.addEventListener("message", function (event) { 
    alert("We got a message from the extension! - " + event.name + ": " + event.message); 
}); 

Alert pojawia się po kliknięciu przycisku na pasku narzędzi (gdy jestem na stronie na webkit.org, tak jak pozostawiłem w domyślnych ustawieniach SFSafariWebsiteAccess), więc rozszerzenie działa i rejestruje kliknięcie. Ale nie widzę NSLog w konsoli Xcode ani w aplikacji Console.

Jestem prawdziwym nowicjuszem Xcode, więc jestem pewien, że brakuje mi czegoś oczywistego - ale dlaczego w konsoli nie pojawia się komunikat NSLog?

(Nie uruchamiam się jako administrator, w przypadku, gdy robi różnicę - mimo że wprowadziłem dane konta administratora za każdym razem, gdy poproszono mnie o uruchomienie Xcode po raz pierwszy. Zauważyłem, że w aplikacji Console , kiedy wybiorę system.log, widzę komunikat "Nie można odczytać pliku". To might be related to not running as an administrator.)

Odpowiedz

5

Przełącz na schemat dla twojego rozszerzenia (schematy znajdują się po prawej stronie przycisków Uruchom i Zatrzymaj), a następnie naciśnij Uruchom.

Okno podręczne poprosi o wybór aplikacji do uruchomienia: wybierz Safari.

Nowa instancja przeglądarki Safari powinna się otworzyć, a zobaczysz dane wyjściowe dziennika w konsoli Xcode.

Jeśli nie podpisały swoją aplikację i rozszerzenie jednak, Safari odrzuci swoje przedłużenie i konsola pojawi się komunikat jak

2017-04-12 13:00:44.799843-0400 Safari[37188:2787364] [Extensions] 
Computing the code signing dictionary failed for extension with 
identifier com.your.app.extension 
2017-04-12 13:00:44.799865-0400 Safari[37188:2787364] [Extensions] 
Disabling and blocking extension with identifier: 
com.your.app.extension 

W tym przypadku wystarczy ponownie sprawdzić „zezwalaj na niepodpisane Extensions "w menu dewelopera Safari i włącz rozszerzenie w okienku Preferencje, po czym powinieneś być gotowy.

+0

Dzięki temu minęło dużo czasu, zanim zobaczyłem twoją odpowiedź :) – Simcha

+0

Czy istnieje sposób, aby wybrać Safari na zawsze jako aplikację do uruchomienia? – ZedTuX