watchOS Sorunlarını Giderme

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

Bilinen Sorunlar

Genel

  • Mac için Visual Studio'ın önceki sürümlerinde AppleCompanion Ayarlar simgelerinden biri yanlış şekilde 88x88 piksel olarak gösteriliyor; bu da App Store'a göndermeye çalıştığınızda Eksik Simge Hatasıyla sonuçlanıyor. Bu simge 87x87 piksel (@3x Retina ekranlar için 29 birim) olmalıdır. Bunu Mac için Visual Studio'da düzeltemezsiniz; görüntü varlığını Xcode'da düzenleyin veya Contents.json dosyasını el ile düzenleyin.

  • İzleme Uzantısı Projesinin Info.plist > WKApp Paket Kimliği, Watch Uygulamasının Paket Kimliği ile eşleşecek şekilde doğru ayarlanmadıysa, hata ayıklayıcı bağlanamaz ve Mac için Visual Studio "Hata ayıklayıcının bağlanması bekleniyor" iletisiyle bekler.

  • Hata ayıklama, Bildirimler modunda desteklenir ancak güvenilir olmayabilir. Yeniden deneme bazen işe yarayacaktır. Watch Uygulamasının Info.plistWKCompanionAppBundleIdentifier dosyasının iOS üst/kapsayıcı uygulamasının (i Telefon üzerinde çalışan paket tanımlayıcısı) ile eşleşecek şekilde ayarlandığını onaylayın.

  • iOS Tasarım Aracı, Göz atma veya Bildirim arabirimi denetleyicileri için giriş noktası oklarını göstermez.

  • Görsel taslaklara iki WKNotificationControllers tane ekleyemezsiniz. Geçici çözüm: notificationCategory Görsel taslak XML'sindeki öğesi her zaman aynı idile eklenir. Bu soruna geçici bir çözüm olarak iki (veya daha fazla) Bildirim Denetleyicisi ekleyebilir, görsel taslak dosyasını bir metin düzenleyicisinde açabilir ve ardından öğeyi id el ile benzersiz olacak şekilde değiştirebilirsiniz.

    Görsel taslak dosyasını bir metin düzenleyicisinde açma ve id öğesini benzersiz olacak şekilde el ile değiştirme

  • Uygulamayı başlatmaya çalışırken "Uygulama oluşturulmadı" hatasını görebilirsiniz. Bu durum, başlangıç projesi saat uzantısı projesine ayarlandığında Clean işleminden sonra oluşur. Düzeltme, Tümünü Yeniden Derle'yi > seçip uygulamayı yeniden başlatmaktır.

Simge Görüntülerinden Alfa Kanalını Kaldırma

Simgeler alfa kanalı içermemelidir (alfa kanalı görüntünün saydam alanlarını tanımlar), aksi takdirde uygulama App Store gönderimi sırasında aşağıdakine benzer bir hatayla 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'te alfa kanalını kaldırmak kolaydır:

  1. Simge görüntüsünü Önizleme'de açın ve ardından Dosya > Dışarı Aktar'ı seçin.

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

    Bir alfa kanalı varsa, görüntülenen iletişim kutusunda 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 geçmelidir.

Arabirim Denetleyicisi Dosyalarını El ile Ekleme

Önemli

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

Xcode Interface Builder kullanıyorsanız , izleme uygulamanız için yeni arabirim denetleyicileri oluşturmak ve çıkışların ve eylemlerin C# dilinde kullanılabilmesi için Xcode ile eşitlemeyi etkinleştirmek için şu adımları izleyin:

  1. Xcode Interface Builder'da izleme uygulamasının Interface.storyboard dosyasını açın.

    Görsel taslak Xcode Arabirim Oluşturucusu'nda açılıyor

  2. Yeni InterfaceController bir görüntüyü görsel taslak üzerine sürükleyin:

    A InterfaceController

  3. Artık denetimleri arabirim denetleyicisine (örn. etiketler ve düğmeler) sürükleyebilirsiniz, ancak .h üst bilgi dosyası olmadığından çıkışlar veya eylemler oluşturamazsınız. Aşağıdaki adımlar gerekli .h üst bilgi dosyasının oluşturulmasına neden olur.

    Düzende bir düğme

  4. Görsel şeridi kapatın ve Mac için Visual Studio dönün. İzleme uygulaması uzantısı projesinde yeni bir C# dosyası MyInterfaceController.cs (veya istediğiniz ad) oluşturun (görsel şeridin bulunduğu izleme uygulamasının kendisi DEĞİlDİ). Aşağıdaki kodu ekleyin (ad alanını, sınıf adını ve oluşturucu adını güncelleştirin):

    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. İzleme uygulaması uzantısı projesinde başka bir C# dosyası MyInterfaceController.designer.cs oluşturun ve aşağıdaki kodu ekleyin. Ad alanını, sınıf adını ve özniteliğini güncelleştirin 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ı (isteğe bağlı olarak) Mac için Visual Studio Çözüm Bölmesi'ndeki diğer C# dosyasına sürükleyerek ilk dosyanın alt düğümü yapabilirsiniz. Ardından şu şekilde görünür:

    Çözüm bölmesi

  6. Xcode eşitlemesinin kullandığımız yeni sınıfı (özniteliği aracılığıyla) tanıması için Tümünü Derle'yi Register> seçin.

  7. İzleme uygulaması görsel taslak dosyasına sağ tıklayıp Xcode Arabirim Oluşturucusu ile > Aç'ı seçerek görsel şeridi yeniden açın:

    Görsel taslak Arabirim Oluşturucusu'nda açılıyor

  8. Yeni arabirim denetleyicinizi seçin ve yukarıda tanımladığınız sınıf adını verin, örneğin. MyInterfaceController. Her şey düzgün çalıştıysa, sınıf: açılan listesinde otomatik olarak görünmelidir ve buradan seçebilirsiniz.

    Özel sınıf ayarlama

  9. Görsel taslak ve kodu yan yana görebilmek için Xcode'da Yardımcı Düzenleyici görünümünü (iki örtüşen daire içeren simge) seçin:

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

    Odak kod bölmesindeyken .h üst bilgi dosyasına baktığınızı ve içerik haritası çubuğuna sağ tıklamadığınızdan emin olun ve doğru dosyayı seçin (MyInterfaceController.h)

    MyInterfaceController öğesini seçin

  10. Artık Ctrl tuşunu basılı tutarak çıkışlar ve eylemler oluşturabilir ve görsel taslaktan .h üst bilgi dosyasına sürükleyebilirsiniz.

    Çıkışlar ve eylemler oluşturma

    Sürüklemeyi bıraktığınızda, çıkış mı yoksa eylem mi oluşturacağınız ve adını seçmeniz istenir:

    Çıkış ve eylem iletişim kutusu

  11. Görsel taslak değişiklikleri kaydedildikten ve Xcode kapatıldıktan sonra Mac için Visual Studio dönün. Üst bilgi 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 C# dilinde denetime başvurabilirsiniz (veya eylemi uygulayabilirsiniz).

Komut Satırından Watch Uygulamasını Başlatma

Önemli

İzleme Uygulamasını varsayılan olarak normal uygulama modunda ve ayrıca Mac için Visual Studio ve Visual Studio'da özel yürütme parametrelerini kullanarak Göz atma veya Bildirim modlarında başlatabilirsiniz.

iOS 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'tır.

İşte tam bir örnek (terminalde tek bir satır olarak yürütülür):

/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ıtacak şekilde güncelleştirmeniz gereken parametre:launchsimwatch

--launchsimwatch

İzleme uygulamasını ve uzantısını içeren iOS uygulaması için ana uygulama paketinin tam yolu.

Not

Sağlamanız gereken yol, i Telefon uygulama .app dosyasıdır; örneğin, iOS simülatörüne dağıtılacak olan ve hem saat uzantısını hem de izleme uygulamasını içeren dosyadır.

Örnek:

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

Bildirim Modu

Uygulamanın Bildirim modunu test etmek için parametresini watchlaunchmodeNotification olarak ayarlayın ve test bildirimi yükü içeren bir JSON dosyasının yolunu sağlayın.

Bildirim modu için payload parametresi gereklidir .

Örneğin, mtouch komutuna şu bağımsız değişkenleri 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

Gerekli. Xcode (6.2 veya üzeri) yolunu belirtir.

Örnek:

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

--Aygıt

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

Tam değerler makineler arasında farklılık gösterir ve Apple'ın simctl 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