Свойства служб
Любое приложение, имеющее одну или более служб для обеспечения, должно распространить тип данных, которые могут обработать его службы. Службы распространены через NSServices свойство информационного списка свойств приложения (Info.plist) файл.
Определения свойства
NSServices свойство, значение которого является массивом словарей, указывающим услуги, предоставленные приложением. Ключи для каждой словарной статьи, следующие:
NSMessageуказывает метод экземпляра вызвать. Его значение используется для построения метода Objective C формы messageName:userData:error:. Это сообщение отправляется в объект поставщика услуг приложения.NSPortNameимя порта, на котором приложение должно прислушаться к запросам на обслуживание. Его значение зависит от того, как регистрируется приложение поставщика услуг. В большинстве случаев это - имя приложения. Это свойство проигнорировано для потоков операций Automator, используемых в качестве служб.NSMenuItemсловарь, указывающий текст пункта меню Services. Только одна запись должна быть в этом словаре, и его ключ должен бытьdefault. Его строковое значение используется в качестве текста пункта меню. В меню Services нет никаких подменю, таким образом, отбрасывается предыдущий текст и включая любое настоящее наклонной черты. (В версии 10.5 OS X и ранее, Вы могли использовать наклонную черту для указания подменю. Например,Mail/Send Selectionпоявляется в меню Services, поскольку подменю под названием Почта с элементом под названием Отправляет Выбор.)Любые службы с идентичными именами сняты неоднозначность путем добавления имени приложения, предоставляющего каждую услугу в круглых скобках после ее имени. (В версии 10.5 OS X и ранее,
NSMenuItemдолжно быть уникальным, поскольку только один используется в меню Services, если существуют копии.)Для локализации указанной строки создайте a
ServicesMenu.stringsфайл для каждой локализации в Вашем пакете с вышеупомянутымdefaultстрока пункта меню как ключ поиска. Например, создайте a.stringsимеющий файлSend Selectionкак ключ и локализованный текст как его значение. (См. Руководство по программированию Ресурса для подробных данных о файлах локализованных строк.), Если локализованная строка не найдена,defaultтекст используется.NSKeyEquivalentдополнительный словарь, указывающий эквивалент клавиатуры для вызова команды меню. КакNSMenuItem, единственная запись в словаре должна иметь ключdefaultсо строковым значением, которое может быть локализовано вServicesMenu.stringsфайл. Строковое значение должно быть отдельным символом. Сочетание клавиш является этим символом с модификатором Командной клавиши. Если символ является прописным, модификатор Сдвига также используется.Используйте ключевые эквиваленты экономно. Помните, что Ваши ярлыки добавляются к набору ярлыков, определенных каждым приложением, а также определили другими службами. Когда приложение уже имеет ярлык с тем ключевым эквивалентом, победами ярлыка приложения. Если многократные службы определяют тот же ярлык, какой вызывается, не определено.
NSSendTypesдополнительный массив, содержащий имена типов данных. Отправьте типы являются типами, отправленными от приложения, запрашивающего службу. Ссылка класса NSPasteboard перечисляет несколько типов общих данных. Кроме того, в версии 10.5 OS X и позже, Универсальные Идентификаторы типов могут использоваться. (См. Универсальный Обзор Идентификаторов типов для получения дополнительной информации об Универсальных Идентификаторах типов.) Этот ключ не требуется. (В версии 10.5 OS X и ранее, приложение, предоставляющее услугу, должно указатьNSSendTypes,NSReturnTypes, или оба.)NSReturnTypesдополнительный массив, содержащий имена типов данных. Возвратитесь типы являются типами данных, возвращенными к приложению, запрашивающему службу. Описание класса NSPasteboard перечисляет несколько типов общих данных. Кроме того, в версии 10.5 OS X и позже, Универсальные Идентификаторы типов могут использоваться. (См. Универсальный Обзор Идентификаторов типов для получения дополнительной информации об Универсальных Идентификаторах типов.) Этот ключ не требуется. (В версии 10.5 OS X и ранее, приложение, предоставляющее услугу, должно указатьNSSendTypes,NSReturnTypes, или оба.)NSUserDataдополнительная строка, содержащая значение по Вашему выбору. Можно использовать эту строку для настройки поведения службы. Например, если Ваше приложение предоставляет несколько подобных услуг, у Вас может быть то жеNSMessageзначение для всех них (каждая служба вызывает тот же метод), и отличающееся использованиеNSUserDataзначения для различения их. Эта запись также полезна для приложений, предоставляющих открытые, или дополнительные, услуги. Это свойство проигнорировано для потоков операций Automator, используемых в качестве служб.NSTimeoutдополнительная числовая строка, указывающая число миллисекунд, что службы должны ожидать ответа из приложения, предоставляющего услугу, когда требуется ответ. Если время ожидания превышает значение тайм-аута, приложение прерывает запрос на обслуживание и продолжается без прерывания. Если Вы не указываете эту запись, значение тайм-аута является 30 000 миллисекунд (30 секунд).Пользователи могут также нажать Клавишу выхода или ввести Период команды для отмены.
NSSendFileTypesмассив, содержащий имена типа файла. Только Универсальные Идентификаторы типов позволяются; типы области монтажа не разрешены. (См. Универсальный Обзор Идентификаторов типов для получения дополнительной информации об Универсальных Идентификаторах типов.) Путем присвоения значения этому ключу служба объявляет, что это может воздействовать на файлы, тип которых соответствует один или больше данных типов файлов. Ваша служба получит область монтажа, из которой можно считать файл URLs. Можно указать значения для обоихNSSendTypesиNSSendFileTypesесли Ваша служба может воздействовать и на данные области монтажа и на файлы.NSServiceDescriptionстрока, содержащая описание Вашей службы, подходящей для представления для пользователей. Это может быть локализовано черезServicesMenu.stringsфайл.Описание может быть длинным. Если Ваше описание длинно, значение
NSServiceDescriptionдолжен быть короткий маркер, такой какSERVICE_DESCRIPTION. Полный текст должен быть сданServicesMenu.stringsфайл с тем маркером как его ключ.NSRequiredContextсловарь, который может использоваться для ограничения, когда появляется служба. Посредством разумного использованияNSRequiredContext, можно гарантировать, что служба появляется только, когда она применяет и не создает помехи меню Services, когда это не применимо.NSRequiredContextможет быть словарь, содержащий любой из следующих ключей, все из которых являются дополнительными. Это может также быть массив таких словарей, когда служба включена, если удовлетворен какой-либо из данных контекстов.NSApplicationIdentifierNSTextScriptNSTextLanguageNSWordLimitNSTextContent
Эти ключи имеют следующее значение:
NSApplicationIdentifierпакет ID как строка или массив такого IDs. Ваша служба появится, только если пакет ID текущего приложения соответствует один из данного пакета IDs. Например, Вы могли использовать это для ограничения службы для появления только в XCode или в Средстве поиска.NSServiceCategoryUTI или название категории как строка. При обеспечении UTI служба появится в категории, соответствующей предоставленному UTI. Например, «public.text» заставит Вашу службу появляться в текстовой категории, в то время как «public.source-код» поместит его в категорию Разработки. При обеспечении литерального названия категории, такого как «Интернет», служба появится там.Вы не можете установить новые категории с этим ключом, но он действительно позволяет Вам управлять, в какой существующей категории служба появляется. Поведение для значений, не соответствующих существующую категорию, не определено.
NSTextContentстрока, указывающая тип данных, который текст должен содержать, или массив таких строк. Допустимые значения следующие:URLDateAddressEmailFilePath
Служба доступна, только если выделенный текст содержит один из указанных типов данных. Весь выбранный текст предоставлен для продающего службу приложения, не только частей, которые, как находят, содержали типы определенных данных.
NSTextLanguageстрока, содержащая требуемый полный язык выделенного текста как тег BCP 47. Это может также быть массив таких строк. Служба появляется, только если тег BCP 47 полного языка выбранного текста соответствует один из данных тегов.Соответствие выполняется через схему соответствия диапазона языка по умолчанию, которая является соответствующей префикс схемой. Например,
NSTextLanguageпредставьте в виде строки текст соответствий «zh», язык которого является «zh-Hant». Этот ключ важен только для служб, принимающих текст.NSTextScriptстрока, содержащая стандартный тег script с четырьмя буквами, такой какLatnилиCyrl. Это может также быть массив таких строк. Если доминирующий сценарий выделенного текста будет текстом, соответствующим одному из данных тегов script, служба только появится. Этот ключ важен только для служб, принимающих текст.NSWordLimitцелое число, представляющее максимальное количество выбранных слов, на которые воздействует служба. Например, служба для поиска акций тикером могла бы иметьNSWordLimitиз 1, потому что тикеры не могут содержать пробелы. Это может не быть массив. Этот ключ важен только для служб, принимающих текст.
Дополнительные услуги
Вы обычно определяете службы, когда Вы создаете свое приложение и распространяете их в Info.plist файл пакета приложения. Средство Служб также позволяет Вам распространять службы за пределами комплекта приложений, позволяя Вам создать «дополнительные» службы после факта. Это то, где NSUserData запись становится действительно полезной: можно определить единственное сообщение в приложении, выполняющем действия на основе пользовательских данных, если, такие как выполнение пользовательской строки данных как команда UNIX или обработка его как специальный параметр в дополнение к выбранным данным, отправляющимся через область монтажа. Для определения дополнительных услуг Вы создаете пакет с a .service расширение, содержащее Info.plist файл, поочередно содержащий дополнительные услуги NSServices свойство. Свойство использует приложение NSMessage и NSPortName значения.
Демонстрационный список свойств
NSServices свойство для Safari показано на рисунке 1, как это появляется в Редакторе Списка свойств приложение.
NSServices свойство для Safari
NSServices свойство имеет одну запись, представляющую единственную услугу, предложенную Safari: “Поиск с Google”. Обратите внимание на то, что, для этой записи, имя порта является Safari. Как упомянуто, имя порта обычно является именем приложения.
Запись имеет один тип возврата, NSStringPboardType. Приложение может иметь больше чем один тип возврата на запись, и типы возврата должны не обязательно быть тем же для каждой записи. И Универсальные Идентификаторы типов и типы области монтажа допустимы здесь. (Для получения дополнительной информации об Универсальных Идентификаторах типов см. Универсальный Обзор Идентификаторов типов.)
Запись имеет ключевой эквивалент L, что означает, что Команда-L может использоваться для вызова службы.