Řešení potíží s watchOS

Tato stránka obsahuje další informace a alternativní řešení problémů, se kterými se můžete setkat.

Známé problémy

Obecné

  • starší verze Visual Studio pro Mac nesprávně zobrazovaly jednu z ikon AppleCompanionSettings jako 88x88 pixelů. výsledkem je chyba chybějící ikony při pokusu o odeslání do App storu. Tato ikona by měla být 87x87 pixelů (29 jednotek @3x pro obrazovky Retina). tuto možnost nemůžete v Visual Studio pro Mac opravit – buď upravte prostředek image v Xcode, nebo ručně upravte soubor Contents. json .

  • pokud rozhraní kukátka Project Info. plist WKApp id sady prostředků není správně nastavené tak, aby odpovídalo id sadysledovacích aplikací, ladicímu programu se nepodaří připojit a Visual Studio pro Mac bude čekat na zprávu "čeká se na připojení ladicího programu".

  • Ladění je podporováno v režimu oznámení , ale může být nespolehlivé. Opakování bude někdy fungovat znovu. Potvrďte, že parametr info. plist aplikace kukátka je nastavený tak, aby odpovídal identifikátoru sady prostředků nadřazené aplikace/kontejneru iOS (IE. ta, která běží na iPhone).

  • v nástroji iOS Designer se nezobrazují šipky vstupního bodu pro rychlé navýšení nebo pro řadiče rozhraní oznámení.

  • Nemůžete přidat dva WKNotificationControllers do scénáře. Alternativní řešení: notificationCategory element ve SCÉNÁŘI XML je vždy vložen stejným způsobem id . Pokud chcete tento problém obejít, můžete přidat dva (nebo více) řadiče oznámení, otevřít soubor scénáře v textovém editoru a pak ručně změnit id prvek tak, aby byl jedinečný.

    Otevřete soubor scénáře v textovém editoru a ručně změňte element ID tak, aby byl jedinečný.

  • Při pokusu o spuštění aplikace se může zobrazit chyba "aplikace nebyla sestavena". K této situaci dochází po Vyčištění při nastavení spouštěného projektu na rozšíření kukátka. Opravou je výběr buildu pro opětovné sestavení a opětovné spuštění aplikace.

Odebrání kanálu alfa z obrázků ikon

Ikony by neměly obsahovat alfa kanál (alfa kanál definuje průhledné oblasti obrázku), jinak aplikace bude během odesílání App Storu odmítnuta s chybou podobnou této:

Invalid Icon - The watch application '...watchkitextension.appex/WatchApp.app'
contains an icon file '...watchkitextension.appex/WatchApp.app/Icon-27.5@2x.png'
with an alpha channel. Icons should not have an alpha channel.

Kanál alfa se dá na Mac OS X snadno odebrat pomocí aplikace ve verzi Preview :

  1. Otevřete obrázek ikony ve verzi Preview a pak zvolte Export souboru.

  2. Pokud je k dispozici alfa kanál, dialogové okno, které se zobrazí, bude obsahovat zaškrtávací políčko alfa .

    Pokud je k dispozici alfa kanál, dialogové okno, které se zobrazí, bude obsahovat zaškrtávací políčko alfa.

  3. Zaškrtněte políčko alfa a uložte soubor do správného umístění.

  4. Obrázek ikony by nyní měl předat kontroly ověřování společnosti Apple.

Ruční přidání souborů kontroleru rozhraní

Důležité

podpora WatchKit pro Xamarin zahrnuje návrh scénářů kukátka v nástroji iOS designer (v Visual Studio pro Mac i Visual Studio), který nevyžaduje kroky popsané níže. jednoduše poskytněte řadiči rozhraní název třídy v panelu vlastností Visual Studio pro Mac a soubory kódu jazyka C# budou vytvořeny automaticky.

Pokud používáte Interface Builder Xcode, postupujte podle těchto kroků a vytvořte pro svou aplikaci pro kukátko nové řadiče rozhraní a povolte synchronizaci s Xcode, aby se v jazyce C# k dispozici i akce a.

  1. Otevřete rozhraní kukátka aplikace . ve scénářiXcode Interface Builder.

    Otevření scénáře v Xcode Interface Builder

  2. Přetáhněte nový InterfaceController do scénáře:

    InterfaceController

  3. Nyní můžete přetáhnout ovládací prvky na řadič rozhraní (např. popisky a tlačítka), ale nemůžete zatím vytvořit ani akce, protože neexistuje hlavičkový soubor . h . Následující kroky způsobí vytvoření souboru hlaviček požadovaného souboru . h .

    Tlačítko v rozložení

  4. zavřete scénář a vraťte se do Visual Studio pro Mac. V projektu rozšíření kukátka aplikace vytvořte nový soubor C# MyInterfaceController. cs (nebo libovolný název, který chcete) (ne aplikaci kukátko, kde je scénář). Přidejte následující kód (aktualizujte obor názvů, ClassName a název konstruktoru):

    using System;
    using WatchKit;
    using Foundation;
    
    namespace WatchAppExtension  // remember to update this
    {
        public partial class MyInterfaceController // remember to update this
        : WKInterfaceController
        {
            public MyInterfaceController // remember to update this
            (IntPtr handle) : base (handle)
            {
            }
            public override void Awake (NSObject context)
            {
                base.Awake (context);
                // Configure interface objects here.
                Console.WriteLine ("{0} awake with context", this);
            }
            public override void WillActivate ()
            {
                // This method is called when the watch view controller is about to be visible to the user.
                Console.WriteLine ("{0} will activate", this);
            }
            public override void DidDeactivate ()
            {
                // This method is called when the watch view controller is no longer visible to the user.
                Console.WriteLine ("{0} did deactivate", this);
            }
        }
    }
    
  5. Vytvořte další nový soubor C# MyInterfaceController. Designer. cs v projektu rozšíření kukátka aplikace a přidejte následující kód. Nezapomeňte aktualizovat obor názvů, ClassName a Register atribut:

    using Foundation;
    using System.CodeDom.Compiler;
    
    namespace HelloWatchExtension  // remember to update this
    {
        [Register ("MyInterfaceController")] // remember to update this
        partial class MyInterfaceController  // remember to update this
        {
            void ReleaseDesignerOutlets ()
            {
            }
        }
    }
    

    Tip

    můžete (volitelně) vytvořit tento soubor jako podřízený uzel prvního souboru přetažením do jiného souboru jazyka C# v Oblast řešení Visual Studio pro Mac. Pak bude vypadat takto:

    Panel řešení

  6. Vyberte sestavit Build All , aby Xcode Synchronization Class novou třídu (prostřednictvím Register atributu), kterou jsme použili.

  7. Znovu otevřete scénář tak, že kliknete pravým tlačítkem na soubor scénáře aplikace kukátka a vyberete otevřít pomocí Xcode Interface Builder:

    Otevření scénáře v Interface Builder

  8. Vyberte nový řadič rozhraní a sdělte mu název ClassName, který jste definovali výše, např. MyInterfaceController. Pokud vše fungovalo správně, měl by se automaticky zobrazit v rozevíracím seznamu Třída: a Vy ho můžete vybrat.

    Nastavení vlastní třídy

  9. Vyberte zobrazení editoru pomocníka v Xcode (ikona se dvěma překrývajícími se kruhy), abyste viděli scénář a kód vedle sebe:

    Položka panelu nástrojů editoru pomocníka

    Když je fokus v podokně Code (kód), ujistěte se, že se podíváte na hlavičkový soubor . h , a pokud ne, klikněte pravým tlačítkem na panel s popisem cesty a vyberte správný soubor (MyInterfaceController. h).

    Vybrat MyInterfaceController

  10. Nyní můžete vytvořit akci a akce pomocí kombinace kláves Ctrl + přetažení ze scénáře do souboru hlaviček . h .

    Vytváření odbytišť a akcí

    Po uvolnění přetažení se zobrazí výzva, abyste vybrali, jestli se má vytvořit zásuvka nebo akce, a zvolte jeho název:

    Dialogové okno zásuvka a akce

  11. jakmile se změny scénáře uloží a Xcode se zavře, vraťte se do Visual Studio pro Mac. Zjistí změny hlavičkového souboru a automaticky přidá kód do souboru . Designer. cs :

    [Register ("MyInterfaceController")]
    partial class MyInterfaceController
    {
        [Outlet]
        WatchKit.WKInterfaceButton myButton { get; set; }
    
        void ReleaseDesignerOutlets ()
        {
            if (myButton != null) {
                myButton.Dispose ();
                myButton = null;
            }
        }
    }
    

Nyní můžete odkazovat na ovládací prvek (nebo implementovat akci) v jazyce C#!

Spuštění aplikace kukátka z příkazového řádku

Důležité

ve výchozím nastavení můžete aplikaci kukátka spustit v normálním režimu aplikace a také v přehledech nebo v režimech oznámení pomocí vlastních parametrů spuštění v Visual Studio pro Mac a Visual Studio.

Pomocí příkazového řádku můžete také řídit simulátor iOS. Nástroj příkazového řádku, který se používá ke spouštění aplikací kukátka, je mtouch.

Tady je úplný příklad (spuštěný jako jeden řádek v terminálu):

/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/bin/mtouch --sdkroot=/Applications/Xcode.app/Contents/Developer/ --device=:v2:runtime=com.apple.CoreSimulator.SimRuntime.iOS-8-2,devicetype=com.apple.CoreSimulator.SimDeviceType.iPhone-6
--launchsimwatch=/path/to/watchkitproject/watchsample/bin/iPhoneSimulator/Debug/watchsample.app

Parametr, který je třeba aktualizovat, aby odrážel vaši aplikaci launchsimwatch :

--launchsimwatch

Úplná cesta k hlavní sadě prostředků aplikace pro iOS, která obsahuje aplikaci a rozšíření kukátka.

Poznámka

cesta, kterou je třeba dodat, je určena pro soubor iPhone aplikace. app, tj. ten, který se nasadí do simulátoru iOS a který obsahuje rozšíření kukátka a aplikace kukátka.

Příklad:

--launchsimwatch=/path/to/watchkitproject/watchsample/bin/iPhoneSimulator/Debug/watchsample.app

Režim oznámení

Chcete-li otestovat režim oznámeníaplikace, nastavte parametr na a zadejte cestu k souboru JSON, který obsahuje datovou část oznámení testu.

Pro režim oznámení je vyžadován parametr datové části.

Přidejte například do příkazu mtouch tyto argumenty:

--watchlaunchmode=Notification --watchnotificationpayload=/path/to/file.json

Jiné argumenty

Zbývající argumenty jsou vysvětleny níže:

--sdkroot

Povinná hodnota. Určuje cestu k Xcode (6,2 nebo novější).

Příklad:

 --sdkroot /Applications/Xcode.app/Contents/Developer/

--zařízení

Zařízení simulátoru, které se má spustit. To je možné zadat dvěma způsoby, buď pomocí udid konkrétního zařízení, nebo pomocí kombinace modulu runtime a typu zařízení.

Přesné hodnoty se liší mezi počítači a lze je dotazovat pomocí nástroje Simctl společnosti Apple:

/Applications/Xcode.app/Contents/Developer/usr/bin/simctl list

UDID

Příklad:

--device=:v2:udid=AAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE

Typ modulu runtime a zařízení

Příklad:

--device=:v2:runtime=com.apple.CoreSimulator.SimRuntime.iOS-8-2,devicetype=com.apple.CoreSimulator.SimDeviceType.iPhone-6