2016-08-08 17 views
1

Sowohl 1Password als auch LastPass verwenden dasselbe Schema (org-appextension-feature-password-management) für die Passwortverwaltung. Dadurch können Apps von Drittanbietern die onepassword-app-extension verwenden, um mit einem dieser Passwortmanager zu arbeiten.Wie man eine kompatible Passwortverlängerung macht?

Wenn ich meinen eigenen Passwortmanager implementieren möchte, der mit dieser Erweiterung kompatibel ist, was muss ich tun?

Antwort

2

Um einen Passwort-Manager zu implementieren:

  1. ein neues Ziel zu Ihrem Projekt hinzufügen. Wählen Sie "Aktionserweiterung".

  2. Fügen Sie org-appextension-feature-password-management als URL-Schema (CFBundleURLSchemes) hinzu, das von Ihrer App unterstützt wird.

    Sie können dies in der Registerkarte Info Ihres Ziels tun. Das Schema ist der wichtige Teil. Die identifier doesn't seem to be used.

    Dies ist erforderlich, damit -[OnePasswordExtension isAppExtensionAvailable] wahr zurückgibt. Diese

    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 
    

    wird sicherstellen, dass Ihre Erweiterung wird nur angezeigt, wenn die -[OnePasswordExtension findLoginForURLString:forViewController:sender:completion:] Methode aufgerufen wird:

  3. In Ihrem Ziel der App-Erweiterung, die NSExtensionActivationRule von TRUEPREDICATE wie folgt ändern. Wenn Sie mehr als eines dieser UTIs abgleichen möchten, lesen Sie Apple's more complex example here.

    Hinweis: Diese SUBQUERY ist die gleiche wie Apple's SUBQUERY example, mit der Konstante geändert. Wenn Sie sich über die Syntax oder wie es funktioniert, see this answer.

  4. Wenn Sie bereit sind, Daten von der Verlängerung zurück zu senden an den Host-App:

    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) 
    

Wenn Sie sich fragen, warum es okay ist, diese Systeme zu registrieren, können Sie read this article:

Unser markenneutrales Schema sollte sowohl den Benutzern als auch den App-Entwicklern die Arbeit erleichtern. Daher besteht ein Teil unseres Grundes für die Verwendung eines markenneutralen Schemas darin, so viele App-Entwickler wie möglich zu ermutigen, dieses Schema zu verwenden. Wir erzwingen App-Entwickler nicht, sich zwischen 1Password und einem Wettbewerber zu entscheiden. Stattdessen delegieren wir die Wahl des zu verwendenden Passwortmanagers an die Stelle, an die diese Auswahl gehört: Sie.

+0

Können Sie weitere Details angeben. Es gibt 19 verschiedene Application Extension-Typen, von denen einer zum Erstellen des Passwort-Managers verwendet wird. – user1478430