Bagikan melalui


Pemecahan Masalah watchOS

Halaman ini berisi informasi dan solusi tambahan untuk masalah yang mungkin Anda temui.

Masalah Umum

Umum

  • Rilis Visual Studio untuk Mac sebelumnya salah menampilkan salah satu ikon AppleCompanion Pengaturan sebagai 88x88 piksel; yang menghasilkan Kesalahan Ikon Hilang jika Anda mencoba mengirimkan ke App Store. Ikon ini harus 87x87 piksel (29 unit untuk layar @3x Retina). Anda tidak dapat memperbaikinya di Visual Studio untuk Mac - edit aset gambar di Xcode atau edit file Contents.json secara manual.

  • Jika ID Bundel WKApp Info.plist > Proyek Ekstensi Watch tidak diatur dengan benar agar sesuai dengan ID Bundel Aplikasi Watch, debugger akan gagal terhubung dan Visual Studio untuk Mac akan menunggu dengan pesan "Menunggu debugger tersambung".

  • Penelusuran kesalahan didukung dalam mode Pemberitahuan tetapi tidak dapat diandalkan. Mencoba kembali terkadang akan berhasil. Konfirmasikan bahwa Info.plistWKCompanionAppBundleIdentifier Aplikasi Watch diatur agar sesuai dengan pengidentifikasi bundel aplikasi induk/kontainer iOS (yaitu yang berjalan di i Telepon).

  • Perancang iOS tidak menampilkan panah titik masuk untuk pengontrol antarmuka Glance atau Pemberitahuan.

  • Anda tidak dapat menambahkan dua WKNotificationControllers ke papan-cerita. Solusi sementara: notificationCategory Elemen di XML papan cerita selalu disisipkan dengan id. Untuk mengatasi masalah ini, Anda dapat menambahkan dua (atau lebih) Pengontrol Pemberitahuan, buka file papan cerita di editor teks lalu ubah id elemen menjadi unik secara manual.

    Membuka file papan cerita di editor teks dan mengubah elemen id secara manual menjadi unik

  • Anda mungkin melihat kesalahan "Aplikasi belum dibuat" saat mencoba meluncurkan aplikasi. Ini terjadi setelah Clean ketika proyek startup diatur ke proyek ekstensi watch. Perbaikannya adalah memilih Bangun > Ulang Semua lalu luncurkan ulang aplikasi.

Menghapus Saluran Alfa dari Gambar Ikon

Ikon tidak boleh berisi saluran alfa (saluran alfa menentukan area transparan gambar), jika tidak, aplikasi akan ditolak selama pengiriman App Store dengan kesalahan yang mirip dengan ini:

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.

Sangat mudah untuk menghapus saluran alfa di Mac OS X menggunakan aplikasi Pratinjau :

  1. Buka gambar ikon di Pratinjau lalu pilih Ekspor File>.

  2. Dialog yang muncul akan menyertakan kotak centang Alpha jika ada saluran alfa.

    Dialog yang muncul akan menyertakan kotak centang Alpha jika ada saluran alfa

  3. Hapus centang pada kotak Alfa dan Simpan file ke lokasi yang benar.

  4. Gambar ikon sekarang harus melewati pemeriksaan validasi Apple.

Menambahkan File Pengontrol Antarmuka Secara Manual

Penting

Dukungan WatchKit Xamarin mencakup merancang papan cerita jam tangan di perancang iOS (di Visual Studio untuk Mac dan Visual Studio), yang tidak memerlukan langkah-langkah yang diuraikan di bawah ini. Cukup beri pengontrol antarmuka nama Kelas di pad Properti Visual Studio untuk Mac dan file kode C# akan dibuat secara otomatis.

Jika Anda menggunakan Xcode Interface Builder, ikuti langkah-langkah ini untuk membuat pengontrol antarmuka baru untuk aplikasi jam anda dan mengaktifkan sinkronisasi dengan Xcode sehingga outlet dan tindakan tersedia di C#:

  1. Buka Interface.storyboard aplikasi jam tangan di Xcode Interface Builder.

    Membuka papan cerita di Xcode Interface Builder

  2. Seret baru InterfaceController ke papan cerita:

    A InterfaceController

  3. Anda sekarang dapat menyeret kontrol ke pengontrol antarmuka (misalnya label dan tombol) tetapi Anda belum dapat membuat outlet atau tindakan, karena tidak ada file header .h . Langkah-langkah berikut akan menyebabkan file header .h yang diperlukan dibuat.

    Tombol dalam tata letak

  4. Tutup papan cerita dan kembali ke Visual Studio untuk Mac. Buat file C# baru MyInterfaceController.cs (atau nama apa pun yang Anda suka) di proyek ekstensi aplikasi jam tangan (BUKAN aplikasi jam tangan itu sendiri di mana papan cerita berada). Tambahkan kode berikut (memperbarui namespace, nama kelas, dan nama konstruktor):

    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. Buat file C# baru lainnya MyInterfaceController.designer.cs di proyek ekstensi aplikasi watch dan tambahkan kode di bawah ini. Pastikan untuk memperbarui namespace, nama kelas, dan 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

    Anda dapat (opsional) menjadikan file ini sebagai simpul anak dari file pertama dengan menyeretnya ke file C# lainnya di Visual Studio untuk Mac Solution Pad. Kemudian akan muncul seperti ini:

    Pad Solusi

  6. Pilih Build > Build All sehingga sinkronisasi Xcode akan mengenali kelas baru (melalui Register atribut) yang kami gunakan.

  7. Buka kembali papan cerita dengan mengklik kanan pada file storyboard aplikasi jam tangan dan memilih Buka Dengan > Xcode Interface Builder:

    Membuka papan cerita di Penyusun Antarmuka

  8. Pilih pengontrol antarmuka baru Anda dan berikan nama kelas yang Anda tentukan di atas, misalnya. MyInterfaceController. Jika semuanya telah berfungsi dengan benar, semuanya akan muncul secara otomatis di daftar drop-down Kelas: dan Anda dapat memilihnya dari sana.

    Mengatur kelas kustom

  9. Pilih tampilan Editor Asisten di Xcode (ikon dengan dua lingkaran yang tumpang tindih) sehingga Anda dapat melihat papan cerita dan kode berdampingan:

    Item toolbar Editor Asisten

    Saat fokus ada di panel kode, pastikan Anda melihat file header .h , dan jika tidak klik kanan di bilah breadcrumb dan pilih file yang benar (MyInterfaceController.h)

    Pilih MyInterfaceController

  10. Anda sekarang dapat membuat outlet dan tindakan oleh Ctrl + seret dari papan cerita ke dalam file header .h .

    Membuat outlet dan tindakan

    Saat melepaskan seret, Anda akan diminta untuk memilih apakah akan membuat outlet atau tindakan, dan memilih namanya:

    Outlet dan dialog tindakan

  11. Setelah perubahan papan cerita disimpan dan Xcode ditutup, kembali ke Visual Studio untuk Mac. Ini akan mendeteksi perubahan file header dan secara otomatis menambahkan kode ke file .designer.cs :

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

Anda sekarang dapat mereferensikan kontrol (atau menerapkan tindakan) di C#!

Meluncurkan Aplikasi Watch dari Baris Perintah

Penting

Anda dapat memulai Aplikasi Watch dalam mode aplikasi normal secara default, dan juga dalam mode Glance atau Notification menggunakan parameter eksekusi kustom di Visual Studio untuk Mac dan Visual Studio.

Anda juga dapat menggunakan baris perintah untuk mengontrol Simulator iOS. Alat baris perintah yang digunakan untuk meluncurkan aplikasi watch adalah mtouch.

Berikut adalah contoh lengkap (dijalankan sebagai satu baris di terminal):

/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

Parameter yang perlu Anda perbarui untuk mencerminkan aplikasi Anda adalah launchsimwatch:

--launchsimwatch

Jalur lengkap ke bundel aplikasi utama untuk aplikasi iOS yang berisi aplikasi watch dan ekstensi.

Catatan

Jalur yang perlu Anda sediakan adalah untuk file .app aplikasi i Telepon, yaitu yang akan disebarkan ke simulator iOS dan yang berisi ekstensi jam tangan dan aplikasi tonton.

Contoh:

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

Mode Pemberitahuan

Untuk menguji mode Pemberitahuan aplikasi, atur watchlaunchmode parameter ke Notification dan berikan jalur ke file JSON yang berisi payload pemberitahuan pengujian.

Parameter payload diperlukan untuk mode Pemberitahuan.

Misalnya, tambahkan argumen ini ke perintah mtouch:

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

Argumen Lain

Argumen yang tersisa dijelaskan di bawah ini:

--sdkroot

Harus diisi. Menentukan jalur ke Xcode (6.2 atau yang lebih baru).

Contoh:

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

--Perangkat

Perangkat simulator yang akan dijalankan. Ini dapat ditentukan dengan dua cara, baik menggunakan udid perangkat tertentu, atau menggunakan kombinasi runtime dan jenis perangkat.

Nilai yang tepat bervariasi di antara mesin, dan dapat dikueri menggunakan alat simctl Apple:

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

UDID

Contoh:

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

Runtime dan Jenis perangkat

Contoh:

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