watchOS Устранение неполадокwatchOS Troubleshooting

Эта страница содержит дополнительные сведения и возможные решения проблем, которые могут возникнуть.This page contains additional information and workarounds for issues you may encounter.

Известные проблемыKnown Issues

ОбщиеGeneral

  • Более ранних версиях Visual Studio для Mac неправильно отображается одно из AppleCompanionSettings значки как 88 x 88 точек; что приводит к отсутствует значок ошибки при попытке отправить в App Store.Earlier releases of Visual Studio for Mac incorrectly show one of the AppleCompanionSettings icons as being 88x88 pixels; which results in a Missing Icon Error if you attempt to submit to the App Store. Этот значок должен составлять пикселей 87 x 87 (29 единицы измерения для @3x Retina экранов).This icon should be 87x87 pixels (29 units for @3x Retina screens). Не удается устранить эту проблему в Visual Studio для Mac - либо изменение ресурса изображения в Xcode или вручную изменить Contents.json файла (в соответствии с в этом примере).You cannot fix this in Visual Studio for Mac - either edit the image asset in Xcode or manually edit the Contents.json file (to match this sample).

  • Если проект расширения Watch Info.plist > идентификатор пакета WKApp не соответствующим образом изменить в соответствии с приложение Watch идентификатор пакета, отладчик не сможет подключиться и Visual Studio для Mac будет ожидать сообщение «Ожидание подключения отладчика».If the Watch Extension Project's Info.plist > WKApp Bundle ID is not correctly set to match the Watch App's Bundle ID, the debugger will fail to connect and Visual Studio for Mac will wait with the message "Waiting for debugger to connect".

  • Поддерживается отладка в уведомления режим, но могут быть ненадежными.Debugging is supported in Notifications mode but can be unreliable. Повторная попытка будет иногда работать.Retrying will sometimes work. Убедитесь, что приложение Watch Info.plist WKCompanionAppBundleIdentifier соответствует идентификатору пакета приложения iOS родительского или контейнера (т. е., запущенным на iPhone).Confirm that the Watch App's Info.plist WKCompanionAppBundleIdentifier is set to match the bundle identifier of the iOS parent/container app (ie. the one that runs on the iPhone).

  • Конструктор iOS не содержит стрелок entrypoint для обзора или уведомления контроллеры интерфейса.iOS Designer does not show entrypoint arrows for Glance or Notification interface controllers.

  • Не удается добавить два WKNotificationControllers раскадровки.You cannot add two WKNotificationControllers to a storyboard. Решение notificationCategory Элемент в раскадровке XML всегда вставляется с тем же id.Workaround: The notificationCategory element in the storyboard XML is always inserted with the same id. Чтобы обойти эту проблему, можно добавить контроллеры уведомлений два (или более), откройте файл раскадровки в текстовом редакторе и вручную изменить id элемента должны быть уникальными.To work around this problem you can add two (or more) Notification Controllers, open the storyboard file in a text editor and then manually change the id element to be unique.

  • Может появиться сообщение об ошибке «не было создано приложение» при попытке запустить приложение.You may see an error "The application has not been built" when trying to launch the app. Это происходит после Очистить если запускаемый проект присвоено проект расширения контрольных значений.This occurs after a Clean when the startup project is set to the watch extension project. Исправление заключается в выберите сборки > перестроить все и затем повторно запустить приложение.The fix is to select Build > Rebuild All and then re-launch the app.

Visual StudioVisual Studio

Конструктор iOS поддерживают набора контрольных значений для требует решение настроены правильно.The iOS Designer support for Watch Kit requires the solution to be configured correctly. Если не заданы ссылки проекта (см. в разделе как задать ссылки) в область конструктора не будет работать правильно.If the project references are not set (see how to set references) then the design surface will not work correctly.

Удаление альфа-канал из изображений значковRemoving the Alpha Channel from Icon Images

Значки не должен содержать альфа-канал (альфа-канала определяет прозрачные области изображения), в противном случае будут отклонены приложения во время отправки App Store с сообщением об ошибке следующего вида:Icons should not contain an alpha channel (the alpha channel defines transparent areas of an image), otherwise the app will be rejected during App Store submission with an error similar to this:

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.

Это просто удалить альфа-канал на Mac OS X с помощью предварительной версии приложения:It's easy to remove the alpha channel on Mac OS X using the Preview app:

  1. Открытие изображения значка в предварительной версии и выберите файл > Экспорт.Open the icon image in Preview and then choose File > Export.

  2. Появление диалогового окна будет включать альфа-канал флажок, если присутствует альфа-канал.The dialog that appears will include an Alpha checkbox if an alpha channel is present.

  3. Untick альфа-канал флажок и Сохранить файл в нужном месте.Untick the Alpha checkbox and Save the file to the correct location.

  4. Изображение значка теперь должна пройти проверку Apple.The icon image should now pass Apple's validation checks.

Вручную добавлять файлы контроллер интерфейсаManually Adding Interface Controller Files

Важно!

Поддержка WatchKit Xamarin включает в себя проектирование watch раскадровки в конструктор iOS (в Visual Studio для Mac и Visual Studio), которая не требует действия, описанные ниже.Xamarin's WatchKit support includes designing watch storyboards in the iOS designer (in both Visual Studio for Mac and Visual Studio), which does not require the steps outlined below. Просто имя контроллера интерфейса класса в Visual Studio для Mac свойства рукописного ввода и C# файлы кода будет создана автоматически.Simply give an interface controller a Class name in the Visual Studio for Mac Properties pad and the C# code files will be created automatically.

Если использовании построителя интерфейс Xcode, выполните следующие действия для создания новых контроллеров интерфейс для наблюдения за приложения и включите синхронизацию с Xcode, выходов и действия, доступные в C#:If you are using Xcode Interface Builder, follow these steps to create new interface controllers for your watch app and enable synchronization with Xcode so that the outlets and actions are available in C#:

  1. Откройте приложение watch Interface.storyboard в конструктора Interface Builder Xcode.Open the watch app's Interface.storyboard in Xcode Interface Builder.

  2. Перетащите новый InterfaceController на раскадровку:Drag a new InterfaceController onto the storyboard:

  3. Теперь можно перетаскивать элементы управления на контроллер интерфейса (например)You can now drag controls onto the interface controller (eg. подписи и кнопки), но нельзя создать переменные экземпляров и действия, так как не .h файл заголовка.labels and buttons) but you cannot create outlets or actions yet, because there is no .h header file. Ниже приведет к необходимая .h создаваемого файла заголовка.The following steps will cause the required .h header file to be created.

  4. Закройте раскадровку и вернитесь в Visual Studio для Mac.Close the storyboard and return to Visual Studio for Mac. Создайте новый C# файл MyInterfaceController.cs (или любое имя по своему усмотрению) в смотреть расширение приложения проекта (не watch самого приложения где раскадровки).Create a new C# file MyInterfaceController.cs (or whatever name you like) in the watch app extension project (NOT the watch app itself where the storyboard is). Добавьте следующий код (обновление пространство имен, имени класса и имя конструктора):Add the following code (updating the namespace, classname, and the constructor name):

     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. Создайте еще один C# файл MyInterfaceController.designer.cs в смотреть расширение приложения проекта и добавьте приведенный ниже код.Create another new C# file MyInterfaceController.designer.cs in the watch app extension project and add the code below. Не забудьте обновить пространство имен, имя класса и Register атрибут:Be sure to update the namespace, the classname and the Register attribute:

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

    Совет. (Необязательно) можно сделать этот файл дочерний узел первого файла, перетащив его на другой C# файл в Visual Studio для Mac панели решения.Tip: You can (optionally) make this file a child node of the first file by dragging it onto the other C# file in the Visual Studio for Mac Solution Pad. Оно затем будет выглядеть следующим образом:It will then appear like this:

  6. Выберите сборки > собрать все таким образом, чтобы синхронизация Xcode распознает новый класс (через Register атрибут), мы использовали.Select Build > Build All so that Xcode synchronization will recognize the new class (via the Register attribute) that we used.

  7. Повторно откройте раскадровку, щелкнув файл раскадровки приложения watch открыть с помощью > конструктора Interface Builder Xcode:Re-open the storyboard by right-clicking on the watch app storyboard file and selecting Open With > Xcode Interface Builder:

  8. Выберите новый контроллер интерфейса и присвойте ему имя класса, определенный выше, например.Select your new interface controller and give it the classname you defined above, eg. MyInterfaceController.MyInterfaceController. Если все работает правильно, он должен отображаться автоматически в класса: раскрывающегося списка, вы могли выбрать их оттуда.If everything has worked correctly, it should appear automatically in the Class: drop down list and you can select it from there.

  9. Выберите вспомогательном редакторе просмотра в Xcode (значок с двумя перекрывающимися кругами), чтобы вы могли видеть, раскадровки и код side-by-side:Choose the Assistant Editor view in Xcode (the icon with two overlapping circles) so that you can see the storyboard and the code side-by-side:

    Когда фокус находится в области кода, убедитесь, взглянуть на .h файл заголовка и если не щелкните правой кнопкой мыши в строке навигации и выберите нужный файл (MyInterfaceController.h)When the focus is in the code pane, ensure you're look at the .h header file, and if not right-click in the breadcrumb bar and select the correct file (MyInterfaceController.h)

  10. Теперь можно создавать переменные экземпляров и действия по Ctrl + перетаскивание из раскадровки в .h файл заголовка.You can now create outlets and actions by Ctrl + drag from the storyboard into the .h header file.

    Отпустите перетаскивания, вам будет предложено выбрать необходимость создания переменной экземпляра или действие и выберите его имя:When you release the drag, you'll be prompted to select whether to create an outlet or an action, and choose its name:

  11. После сохранения изменений раскадровки и Xcode закрыт, вернитесь в Visual Studio для Mac.Once the storyboard changes are saved and Xcode is closed, return to Visual Studio for Mac. Он обнаружит изменения файла заголовка и автоматически добавлять код . designer.cs файла:It will detect the header file changes and automatically add code to the .designer.cs file:

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

Теперь можно ссылаться на элемент управления (или реализовать это действие) в C#!You can now reference the control (or implement the action) in C#!

Запуск приложения Watch из командной строкиLaunching the Watch App from the Command Line

Важно!

Можно запустить приложение просмотра в режиме обычного приложения по умолчанию, а также в Обзор или уведомления режимы с использованием выполнения пользовательских параметров в Visual Studio для Mac и Visual Studio.You can start the Watch App in normal app mode by default, and also in Glance or Notification modes using custom execution parameters in Visual Studio for Mac and Visual Studio.

Также можно командной строки для управления симулятора iOS.You can also use the command line to control the iOS Simulator. — Средство командной строки, используемые для запуска приложения watch mtouch.The command line tool used to launch watch apps is mtouch.

Ниже приведен полный пример (выполняется в виде одной строки в окне терминала).Here is a full example (executed as a single line in the 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

Параметр, необходимо обновить в соответствии с приложения является launchsimwatch:The parameter you need to update to reflect your app is launchsimwatch:

--launchsimwatch--launchsimwatch

Полный путь к пакету основного приложения для приложения iOS, который содержит приложение просмотра и расширение.The full path to the main app bundle for the iOS app that contains the watch app and extension.

Примечание

Необходимо предоставить ведет к App-файл приложения iPhone, то есть того, который будет развертываться на симуляторе iOS и содержит приложение просмотра и расширение просмотра.The path you need to supply is for the iPhone application .app file, i.e. the one that will be deployed to the iOS simulator and that contains both the watch extension and watch app.

ПримерExample:

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

Режим уведомленийNotification Mode

Для тестирования приложения уведомления режим, задайте watchlaunchmode параметр Notification и укажите путь к JSON-файл, содержащий полезные данные уведомления теста.To test the app's Notification mode, set the watchlaunchmode parameter to Notification and supply a path to a JSON file that contains a test notification payload.

Параметр полезных данных является требуется для режим уведомлений.The payload parameter is required for Notification mode.

Например добавьте эти аргументы команды mtouch:For example, add these arguments to the mtouch command:

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

Другие аргументыOther Arguments

Остальные аргументы будут объяснены ниже:The remaining arguments are explained below:

--sdkroot--sdkroot

Обязательный.Required. Указывает путь к Xcode (6.2 или более поздней версии).Specifies the path to Xcode (6.2 or later).

ПримерExample:

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

--устройства--device

Симулятор устройств для выполнения.The simulator device to execute. Это можно указать двумя способами: с помощью udid конкретного устройства, или используя сочетание среды выполнения и типом устройства.This can be specified in two ways, either using the udid of a specific device, or using a combination of runtime and device type.

Точные значения и зависит от между машинами, можно запросить с помощью Apple simctl средство:The exact values varies between machines, and can be queried using Apple’s simctl tool:

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

UDIDUDID

ПримерExample:

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

Время выполнения и тип устройстваRuntime and Device type

ПримерExample:

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