Свойства служб
Любое приложение, имеющее одну или более служб для обеспечения, должно распространить тип данных, которые могут обработать его службы. Службы распространены через 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
может быть словарь, содержащий любой из следующих ключей, все из которых являются дополнительными. Это может также быть массив таких словарей, когда служба включена, если удовлетворен какой-либо из данных контекстов.NSApplicationIdentifier
NSTextScript
NSTextLanguage
NSWordLimit
NSTextContent
Эти ключи имеют следующее значение:
NSApplicationIdentifier
пакет ID как строка или массив такого IDs. Ваша служба появится, только если пакет ID текущего приложения соответствует один из данного пакета IDs. Например, Вы могли использовать это для ограничения службы для появления только в XCode или в Средстве поиска.NSServiceCategory
UTI или название категории как строка. При обеспечении UTI служба появится в категории, соответствующей предоставленному UTI. Например, «public.text» заставит Вашу службу появляться в текстовой категории, в то время как «public.source-код» поместит его в категорию Разработки. При обеспечении литерального названия категории, такого как «Интернет», служба появится там.Вы не можете установить новые категории с этим ключом, но он действительно позволяет Вам управлять, в какой существующей категории служба появляется. Поведение для значений, не соответствующих существующую категорию, не определено.
NSTextContent
строка, указывающая тип данных, который текст должен содержать, или массив таких строк. Допустимые значения следующие:URL
Date
Address
Email
FilePath
Служба доступна, только если выделенный текст содержит один из указанных типов данных. Весь выбранный текст предоставлен для продающего службу приложения, не только частей, которые, как находят, содержали типы определенных данных.
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: “Поиск с Google”. Обратите внимание на то, что, для этой записи, имя порта является Safari. Как упомянуто, имя порта обычно является именем приложения.
Запись имеет один тип возврата, NSStringPboardType
. Приложение может иметь больше чем один тип возврата на запись, и типы возврата должны не обязательно быть тем же для каждой записи. И Универсальные Идентификаторы типов и типы области монтажа допустимы здесь. (Для получения дополнительной информации об Универсальных Идентификаторах типов см. Универсальный Обзор Идентификаторов типов.)
Запись имеет ключевой эквивалент L, что означает, что Команда-L может использоваться для вызова службы.