Řešení potíží se watchOSem
Tato stránka obsahuje další informace a alternativní řešení problémů, se kterými se můžete setkat.
Ruční přidání souborů kontroleru rozhraní pro Tvůrce rozhraní Xcode
Známé problémy
Obecné
Dřívější verze Visual Studio pro Mac nesprávně zobrazují jednu z ikon AppleCompanionSettings jako 88x88 pixelů. Výsledkem je chyba chybějící ikony, pokud se pokusíte odeslat do App Store. Tato ikona by měla být 87 × 877 pixelů (29 jednotek pro obrazovky @3x Sítnice). Tento problém nelze opravit v Visual Studio pro Mac – buď upravit prostředek obrázku v Xcode, nebo ručně upravit soubor Contents.json.
Pokud id sady sady WKApp WKApp Project > rozšíření Kukátka není správně nastavené tak, aby odpovídalo ID sady sad sady hodinek aplikace Watch, ladicí program se nepodaří připojit a Visual Studio pro Mac počká se zprávou Čekání na připojení ladicího programu.
Ladění je podporováno v režimu oznámení , ale může být nespolehlivé. Opakování někdy bude fungovat. Ověřte, že je aplikace Watch Info.plist
WKCompanionAppBundleIdentifier
nastavená tak, aby odpovídala identifikátoru sady nadřazené nebo kontejnerové aplikace pro iOS (tj. ta, která běží na iPhone).iOS Designer nezobrazuje šipky vstupních bodů pro kontrolery rozhraní Rychlý přehled nebo Oznámení.
Do scénáře nelze přidat dva
WKNotificationControllers
. Alternativní řešení: ElementnotificationCategory
ve scénáři XML se vždy vloží se stejnýmid
. Chcete-li tento problém vyřešit, můžete přidat dva (nebo více) kontrolerů oznámení, otevřete soubor scénáře v textovém editoru a poté ručně změňteid
prvek tak, aby byl jedinečný.Při pokusu o spuštění aplikace se může zobrazit chyba Aplikace nebyla sestavena. K tomu dochází po vyčištění , pokud je projekt spuštění nastaven na projekt rozšíření kukátku. Opravou je vybrat Sestavit > znovu sestavit vše a pak znovu spustit aplikaci.
Odebrání alfa kanálu z obrázků ikon
Ikony by neměly obsahovat alfa kanál (alfa kanál definuje průhledné oblasti obrázku), jinak se aplikace během odesílání App Store odmítne 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.
Alfa kanál v systému Mac OS X můžete snadno odebrat pomocí aplikace Preview :
Otevřete obrázek ikony v náhledu a pak zvolte Exportovat soubor>.
Zobrazené dialogové okno bude obsahovat zaškrtávací políčko Alfa , pokud je k dispozici alfa kanál.
Zrušte zaškrtnutí políčka Alfa a uložte soubor do správného umístění.
Obrázek ikony by teď měl projít ověřovacími kontrolami Společnosti Apple.
Ruční přidání souborů kontroleru rozhraní
Důležité
Podpora sady WatchKit pro Xamarin zahrnuje navrhování scénářů hodinek v iOS Designeru (v Visual Studio pro Mac i Visual Studio), které nevyžadují následující kroky. Jednoduše dejte řadiči rozhraní název třídy na panelu vlastností Visual Studio pro Mac a soubory kódu jazyka C# se vytvoří automaticky.
Pokud používáte Xcode Interface Builder, postupujte podle těchto kroků a vytvořte nové kontrolery rozhraní pro vaši kukátko a povolte synchronizaci s Xcode, aby výstupy a akce byly k dispozici v jazyce C#:
Otevřete aplikaci Watch Interface.storyboard v Xcode Interface Builderu.
Přetáhněte nový
InterfaceController
na scénář:Ovládací prvky teď můžete přetáhnout na kontroler rozhraní (např. popisky a tlačítka), ale zatím nemůžete vytvářet výstupy nebo akce, protože neexistuje žádný soubor záhlaví .h . Následující kroky způsobí vytvoření požadovaného souboru hlavičky .h .
Zavřete scénář a vraťte se do Visual Studio pro Mac. Vytvořte nový soubor C# MyInterfaceController.cs (nebo jakýkoli název, který se vám líbí) v projektu rozšíření aplikace kukátku (NE samotná aplikace kukátku, ve které je storyboard). Přidejte následující kód (aktualizace oboru názvů, názvu třídy a názvu 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); } } }
V projektu rozšíření aplikace watch vytvořte další nový soubor C# MyInterfaceController.designer.cs a přidejte níže uvedený kód. Nezapomeňte aktualizovat obor názvů, název třídy 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
Tento soubor můžete (volitelně) nastavit jako podřízený uzel prvního souboru přetažením do druhého souboru C# v oblasti řešení Visual Studio pro Mac. Zobrazí se takto:
Vyberte Sestavit > vše , aby synchronizace Xcode rozpoznala novou třídu (prostřednictvím atributu
Register
), kterou jsme použili.Znovu otevřete scénář tak, že kliknete pravým tlačítkem na soubor scénáře aplikace kukátko a vyberete Otevřít v > Xcode Interface Builderu:
Vyberte nový kontroler rozhraní a dejte mu název třídy, který jste definovali výše, např.
MyInterfaceController
. Pokud všechno fungovalo správně, mělo by se automaticky zobrazit v rozevíracím seznamu Třída: a můžete ho vybrat tam.V Xcode zvolte zobrazení Editor asistenta (ikona se dvěma překrývajícími se kruhy), abyste mohli zobrazit scénář a kód vedle sebe:
Když je fokus v podokně kódu, ujistěte se, že se podíváte na soubor záhlaví .h , a pokud na panel s popisem cesty kliknete pravým tlačítkem myši, vyberte správný soubor (MyInterfaceController.h).
Nyní můžete vytvářet výstupy a akce pomocí ctrl + přetažení z scénáře do souboru záhlaví .h .
Po uvolnění přetažení se zobrazí výzva k výběru, jestli chcete vytvořit výstup nebo akci, a zvolit jeho název:
Po uložení změn scénáře a zavření Xcode se vraťte do Visual Studio pro Mac. Zjistí změny souboru hlaviček 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; } } }
Teď můžete odkazovat na ovládací prvek (nebo implementovat akci) v jazyce C#!
Spuštění aplikace Watch z příkazového řádku
Důležité
Aplikaci Watch můžete spustit ve výchozím nastavení v normálním režimu aplikace a také v režimech rychlého přehledu nebo oznámení pomocí vlastních parametrů spouštění v Visual Studio pro Mac a Visual Studio.
K řízení simulátoru iOS můžete použít také příkazový řádek. Nástroj příkazového řádku použitý ke spouštění aplikací pro sledování je nedotčený.
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 potřeba aktualizovat tak, aby odrážel vaši aplikaci, je launchsimwatch
:
--launchsimwatch
Úplná cesta k hlavní sadě aplikací pro aplikaci pro iOS, která obsahuje aplikaci watch a rozšíření.
Poznámka
Cesta, kterou potřebujete zadat, je určená pro soubor .app aplikace iPhone, tj. ten, který se nasadí do simulátoru iOSu a který obsahuje jak příponu kukátku, tak aplikaci kukátku.
Příklad:
--launchsimwatch=/path/to/watchkitproject/watchsample/bin/iPhoneSimulator/Debug/watchsample.app
Režim oznámení
Pokud chcete otestovat režim oznámení aplikace, nastavte watchlaunchmode
parametr na Notification
soubor JSON, který obsahuje datovou část testovacího oznámení, a zadejte cestu k souboru JSON.
Parametr datové části je vyžadován pro režim oznámení.
Přidejte například tyto argumenty do příkazu mtouch:
--watchlaunchmode=Notification --watchnotificationpayload=/path/to/file.json
Další 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/
--device
Zařízení simulátoru, které se má spustit. To lze zadat dvěma způsoby, a to 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 dají se dotazovat pomocí nástroje Apple Simctl :
/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