2016-08-08 11 views
1

И 1Password, и LastPass используют ту же схему (org-appextension-feature-password-management) для управления паролями. Это позволяет сторонним приложениям использовать onepassword-app-extension для работы с любым из этих менеджеров паролей.Как сделать совместимое расширение пароля?

Если я хочу реализовать свой собственный менеджер паролей, который совместим с этим расширением, что мне нужно сделать?

ответ

2

Для реализации менеджер паролей:

  1. Добавить новую цель для вашего проекта. Выберите «Расширение действия».

  2. Добавить org-appextension-feature-password-management как схему URL (CFBundleURLSchemes), которую поддерживает ваше приложение.

    Вы можете сделать это на вкладке «Информация» вашей цели. Схема является важной частью. identifier doesn't seem to be used.

    Это необходимо для того, чтобы -[OnePasswordExtension isAppExtensionAvailable] вернётся.

  3. В цели вашего расширения приложения, изменить NSExtensionActivationRule от TRUEPREDICATE к следующему:

    SUBQUERY (
        extensionItems, 
        $extensionItem, 
        SUBQUERY (
        $extensionItem.attachments, 
        $attachment, 
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "org.appextension.find-login-action" 
    )[email protected] == [email protected] 
    )[email protected] == 1 
    

    Это позволит убедиться, что ваш добавочный номер появляется только если метод -[OnePasswordExtension findLoginForURLString:forViewController:sender:completion:] называется. Если вы хотите соответствовать более чем одному из этих ИМП, см. Apple's more complex example here.

    Примечание: Этот SUBQUERY совпадает с Apple's SUBQUERY example, с постоянной измененной. Если вам интересно, как синтаксис или как он работает, see this answer.

  4. Когда вы будете готовы для передачи данных с расширением обратно на хост-приложения:

    let itemProvider = NSItemProvider(
        item: ["username": "foo", "password": "123"], 
        typeIdentifier:kUTTypePropertyList as String) // TODO: import MobileCoreServices 
    
    let extensionItem = NSExtensionItem() 
    extensionItem.attachments = [itemProvider] 
    
    extensionContext!.completeRequestReturningItems([extensionItem], completionHandler: nil) 
    

Если вы задаетесь вопросом, почему это хорошо, чтобы зарегистрировать эти схемы, вы можете read this article:

Наша нейтрально-нейтральная схема должна облегчить работу как для пользователей, так и для разработчиков приложений. Таким образом, часть нашей причины использования нейтральной схемы бренда - это , чтобы как можно больше разработчиков приложений использовать эту схему. Мы не заставляем разработчиков приложений выбирать между 1Password и некоторым конкурентом. Вместо этого мы делегируем выбор того, какой менеджер паролей использовать для того, где этот выбор принадлежит: вы.

+0

Можете ли вы предоставить более подробную информацию. Существует 19 различных типов расширений приложений, которые используются для создания диспетчера паролей? – user1478430

 Смежные вопросы

  • Нет связанных вопросов^_^