Синхронизация виджетов

OS X v.10.5 включает Синхронизацию Инструментальной панели, механизм для синхронизации предпочтений виджета между многократным Macs с помощью.Mac. Если виджет установлен и на Macs и на Macs, синхронизируются с помощью Синхронизации Инструментальной панели в.Mac предпочтениях, оба Macs имеют синхронизируемую Инструментальную панель.

Подробные данные синхронизации инструментальной панели

Для виджета, который будет синхронизироваться между двумя Macs, необходимо установить синхронизацию с помощью той же учетной записи.Mac в.Mac предпочтениях на двух или больше Macs. Кроме того, тот же виджет должен быть установлен на всех, синхронизировал Macs.

Как только этим условиям удовлетворяют, Синхронизация Инструментальной панели сохраняет предпочтения виджета в синхронизации между многократным Macs. Эта синхронизация является автоматической и не требует что Вы делать что-либо в Вашем виджете. Каждый раз Ваш виджет получает предпочтение (как обсуждено в Обеспечении Предпочтений), последний раз синхронизировавшая версия предоставлена для Вашего виджета.

Несмотря на то, что предпочтения Вашего виджета синхронизируют бесплатно, можно хотеть сделать две вещи принять синхронизацию в виджет:

Обработка синхронизирующего события

Когда Инструментальная панель синхронизируется с помощью, Ваш виджет может быть уведомлен widget.onsync обработчик. Перечисление 1 показывает обработчик для widget.onsync это читает предпочтение и обновляет строку в интерфейсе виджета со значением предпочтения.

Перечисление 1  , Обеспечивающее onsync обработчик

if (window.widget)
{
    widget.onsync = synced;
}
 
function synced()
{
    document.getElementById("aString").innerText = widget.preferenceForKey("aKey");
}

Обработчик, который Вы предусматриваете widget.onsync когда синхронизация Инструментальной панели завершена, событие вызывают. Это сразу дает Вам возможность после синхронизации для чтения предпочтений и значений обновления в виджете к любым новым значениям, полученным в синхронизации.

Исключая предпочтения от синхронизации

Ваш виджет может иметь значения, которые Вы не хотите включать, когда Инструментальная панель синхронизирует предпочтения через Macs. Для исключения предпочтения из синхронизации используйте SyncExclusions Info.plist ключ, как показано в Перечислении 2.

Перечисление 2  , Исключая предпочтение с помощью ключа SyncExclusions Info.plist

<key>SyncExclusions</key>
        <array>
                <dict>
                        <key>key</key>
                        <string>aKey</string>
                        <key>global</key>
                        <true/>
                </dict>
        </array>

SyncExclusions ключ берет массив словарей как его значение. Каждый словарь состоит из двух ключей: key и global. Для каждого ключа, который Вы хотите исключить из синхронизации, повторите словарь, содержащий key и global значения.

Значение для key имя предпочтения, которое Вы храните, в то время как global ключ является булевым значением, указывающим, является ли предпочтение глобальным или предпочтением на экземпляр. В то время как предпочтение на экземпляр уникально для каждого экземпляра Вашего виджета, глобальные предпочтения не уникальны для одного виджета. Если первая часть его ключа использует, предпочтение является предпочтением на экземпляр widget.identifier свойство, приводя к ключу как <widget.indentifier>-<key>. Если предпочтение на экземпляр не отформатировано таким образом, оно не может быть исключено.

Для создания предпочтений на экземпляр, использующих этот формат включайте функцию как makeKey функция в Перечислении 3.

Перечисление 3  функция для того, чтобы сделать уникальные предпочтения на экземпляр

function makeKey(key)
{
    return (widget.identifier + "-" + key);
}

Затем каждый раз, когда Вы устанавливаете или получаете предпочтение, используйте makeKey функция для создания предпочтения на экземпляр, как продемонстрировано в Перечислении 4.

Перечисление 4  Используя предпочтения на экземпляр

widget.setPreferenceForKey(aString, makeKey("aKey"));
...
var foo = widget.preferenceForKey(makeKey("aKey"));