watchOS sorunlarını giderme

Bu sayfa, karşılaşabileceğiniz sorunlara yönelik ek bilgiler ve geçici çözümler içerir.

Bilinen Sorunlar

Genel

  • daha önceki Mac için Visual Studio sürümleri, AppleCompanionSettings simgelerinden bir şekilde 88x88 piksel olduğunu gösteriyor; bu, uygulama mağazası 'na göndermeye çalışırsanız eksik simge hatasına neden olur. Bu simge 87x87 piksel ( @3x Retina ekranları için 29 birim) olmalıdır. bu Mac için Visual Studio, xcode 'da görüntü varlığını düzenleyin ya da Contents. json dosyasını el ile düzenleyin.

  • izleme uzantısının Project ınfo. plist WKApp demeti kimliği , izleme uygulamasının paket kimliğiyleeşleşecek şekilde doğru şekilde ayarlanmamışsa , hata ayıklayıcı bağlanamaz ve Mac için Visual Studio "hata ayıklayıcının bağlanması bekleniyor"iletisiyle birlikte bekler.

  • Hata ayıklama, bildirim modunda desteklenir, ancak güvenilmez olabilir. Yeniden deneme bazen çalışır. Uygulamanın Info. plist ' i, iOS üst/kapsayıcı uygulamasının (yani iPhone çalışan) paket tanımlayıcısıyla eşleşecek şekilde ayarlandığını onaylayın.

  • iOS Tasarımcısı, bakış veya bildirim arabirimi denetleyicileri için giriş noktası okları göstermez.

  • WKNotificationControllersGörsel taslağa iki tane ekleyemezsiniz. Geçici çözüm: notificationCategory görsel taslak XML 'teki öğesi her zaman aynı şekilde eklenir id . Bu sorunu geçici olarak çözmek için iki (veya daha fazla) bildirim denetleyicisi ekleyebilirsiniz, film şeridi dosyasını bir metin düzenleyicisinde açabilir ve sonra id öğeyi benzersiz olacak şekilde el ile değiştirebilirsiniz.

    Görsel taslak dosyasını bir metin düzenleyicisinde açıp ID öğesini benzersiz olacak şekilde el ile değiştirin

  • Uygulamayı başlatmaya çalışırken "uygulama derlenmedi" hatasını görebilirsiniz. Bu, başlangıç projesi gözcü uzantısı projesine ayarlandığında bir Temizleme sonrasında oluşur. Bu çözüm, derlemeyi yeniden oluşturma işlemini seçip uygulamayı yeniden başlatmayı seçmelidir.

Simge görüntülerinden alfa kanalını kaldırma

Simgeler bir alfa kanalı içermemelidir (alfa kanalı bir görüntünün saydam alanını tanımlar), aksi takdirde uygulama, şuna benzer bir hata ile uygulama mağazası gönderimi sırasında reddedilir:

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.

Önizleme uygulamasını kullanarak Mac OS X alfa kanalını kaldırmak kolaydır:

  1. Önizleme ' de simge görüntüsünü açın ve ardından Dosya dışarı aktar' ı seçin.

  2. Bir alfa kanalı mevcutsa görüntülenen iletişim kutusunda bir Alfa onay kutusu bulunur.

    Bir alfa kanalı mevcutsa görüntülenen iletişim kutusunda bir Alfa onay kutusu bulunur

  3. Alfa onay kutusunun işaretini kaldırın ve dosyayı doğru konuma kaydedin .

  4. Simge görüntüsü artık Apple 'ın doğrulama denetimlerini iletmelidir.

Arabirim denetleyicisi dosyalarını el ile ekleme

Önemli

Xamarin 'in WatchKit desteği, aşağıda özetlenen adımları gerektirmeyen iOS tasarımcısında (hem Mac için Visual Studio hem de Visual Studio) izleme görsel taslakları tasarlamayı içerir. Mac için Visual Studio özellikler panelinde bir arabirim denetleyicisine bir sınıf adı vermeniz yeterlidir ve C# kod dosyaları otomatik olarak oluşturulur.

Xcode Interface Builder kullanıyorsanız, izleme uygulamanız için yeni arabirim denetleyicileri oluşturmak ve Xcode ile eşitlemeyi etkinleştirmek için aşağıdaki adımları izleyin:

  1. İzleme uygulamasının arabirimini açın. Xcode Interface Builderfilm şeridi .

    Film şeridini Xcode 'da açma Interface Builder

  2. InterfaceControllerFilm şeridi üzerine yeni sürükleyin:

    Bir ınterfacecontroller

  3. Artık denetimleri arabirim denetleyicisi üzerine sürükleyebilirsiniz (örn. Etiketler ve düğmeler), ancak hiçbir . h üstbilgi dosyası olmadığından, henüz outbir veya eylemleri oluşturamazsınız. Aşağıdaki adımlar gerekli . h üst bilgi dosyasının oluşturulmasına neden olur.

    Düzendeki bir düğme

  4. görsel taslağı kapatın ve Mac için Visual Studio geri dönün. Uygulama uzantısı projesinde yeni bir C# dosyası ( ya da istediğiniz adı) oluşturun (görsel TASLAĞıN bulunduğu izleme uygulaması değil). Aşağıdaki kodu ekleyin (ad alanı, ClassName ve Oluşturucu adını güncelleştiren):

    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. Uygulama uzantısı projesinde yeni bir New C# dosyası myınterfacecontroller. Designer. cs oluşturun ve aşağıdaki kodu ekleyin. Ad alanı, ClassName ve özniteliği güncelleştirdiğinizden emin olun Register :

    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 ()
            {
            }
        }
    }
    

    İpucu

    bu dosyayı, Mac için Visual Studio Çözüm Bölmesi diğer C# dosyasına sürükleyerek ilk dosyanın alt düğümü yapabilirsiniz (isteğe bağlı olarak). Daha sonra şöyle görünür:

    Çözüm paneli

  6. Xcode eşitlemesinin kullandığımız yeni sınıfı (özniteliği aracılığıyla) tanıması için derleme derlemesi All ' ı seçin Register .

  7. Uygulamayı izle film şeridi dosyasına sağ tıklayıp xInterface Builder Code ile aç' ı seçerek film şeridini yeniden açın:

    Film şeridini Interface Builder açma

  8. Yeni arabirim denetleyicinizi seçin ve yukarıda tanımladığınız ClassName, örn. MyInterfaceController. Her şey doğru şekilde çalıştıysa, sınıf: açılan listesinde otomatik olarak görünmelidir ve buradan seçim yapabilirsiniz.

    Özel bir sınıf ayarlama

  9. Film şeridini ve kodu yan yana görebilmeniz için Xcode (iki çakışan daire olan simge) içinde yardımcı düzenleyici görünümünü seçin:

    Yardımcı Düzenleyici araç çubuğu öğesi

    Odak kod bölmesinde olduğunda, . h üst bilgi dosyasına baktığınızdan ve içerik haritası çubuğuna sağ tıklayıp doğru dosyayı (myınterfacecontroller. h) seçerek emin olun.

    Myınterfacecontroller seçin

  10. Artık film şeridi ' nden . h üstbilgi dosyasına CTRL + sürükleyebilirsiniz ve eylemler oluşturabilirsiniz.

    Aykırı izin ve eylem oluşturma

    Sürüklemeyi serbest bırakırsanız, bir priz veya bir eylem oluşturulup oluşturulmayacağını seçmeniz istenir ve adını seçin:

    Çıkış ve eylem iletişim kutusu

  11. film şeridi değişiklikleri kaydedildikten ve xcode kapatıldıktan sonra, Mac için Visual Studio ' a geri dönün. Üstbilgi dosyası değişikliklerini algılar ve . Designer. cs dosyasına otomatik olarak kod ekler:

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

Artık, denetime başvurabilir (veya eylemi uygulayabilirsiniz) C#!

Izleme uygulamasını komut satırından başlatma

Önemli

izleme uygulamasını varsayılan olarak normal uygulama modunda başlatabilir ve ayrıca Mac için Visual Studio ve Visual Studio özel yürütme parametrelerini kullanarak da bir bakışta veya bildirim modlarında başlatabilirsiniz.

İOS simülatörünü denetlemek için komut satırını da kullanabilirsiniz. İzleme uygulamalarını başlatmak için kullanılan komut satırı aracı mtouch' dir.

Aşağıda, tam bir örnek (terminalde tek bir satır olarak yürütülür) verilmiştir:

/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

Uygulamanızı yansıtmak için güncelleştirmeniz gereken parametre launchsimwatch :

--launchsimwatch

İzleme uygulamasını ve uzantıyı Içeren iOS uygulaması içinana uygulama paketinin tam yolu.

Not

sağlamanız gereken yol, iOS simülatörünü dağıtılacak ve hem gözcü uzantısını hem de gözcü uygulamasını içeren iPhone application. app dosyasıiçindir.

Örnek:

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

Bildirim modu

Uygulamanın bildirim modunutest etmek için, parametresini olarak ayarlayın ve test bildirimi yükü içeren bir JSON dosyasına bir yol sağlayın.

Bildirim modu için yük parametresi gereklidir .

Örneğin, bu bağımsız değişkenleri mtouch komutuna ekleyin:

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

Diğer bağımsız değişkenler

Kalan bağımsız değişkenler aşağıda açıklanmıştır:

--sdkroot

Gereklidir. Xcode yolunu belirtir (6,2 veya üzeri).

Örnek:

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

--cihaz

Yürütülecek simülatör cihazı. Bu, belirli bir cihazın UDID veya çalışma zamanı ve cihaz türünün bir birleşimi kullanılarak iki şekilde belirtilebilir.

Tam değerler makineler arasında farklılık gösterir ve Apple 'ın sımctl Aracı kullanılarak sorgulanabilir:

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

UDID

Örnek:

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

Çalışma zamanı ve Cihaz türü

Örnek:

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