Aktualisieren Sie die SPPermission- und Hayter-Bibliothek

  • Tutorial
- " Irgendeine Art von Bibliothek, jemand aktualisiert ... wo hat heiter?" Warum muss ich, ein hervorragender Entwickler, Zeit für diesen Artikel verbringen? "Sie

denken vielleicht, mein lieber Freund. Keine Notwendigkeit, Zeit zu verlieren. Dies ist nur eine Abendlesung mit einem Teil lustloser, witziger Songs. Im Text geht es um die RequestPermission- Bibliothek und ihren mysteriösen Autor.

Beginnen wir mit der Hauptsache - Rebranding! Die Bibliothek wurde in SPPermission umbenannt . Ich weiß nicht, ob dies der Fall ist oder nicht, aber nachdem der Name geändert wurde, hängt er bereits die zweite Woche in GitHub . Ja, es gibt ein solches Top, es ist bedingt, aber es gibt immer noch interessante Projekte. Der Autor (mysteriöse Person), aktualisierte Banner auf der Projektseite , Beschreibung, ein riesiger Teil wurde gespendet . Gierig was!

Wenden wir uns jedoch dem Projekt selbst zu:



Wie Sie an der riesigen Größe der Gifs (nicht-orthodoxe 4-Megabytes) sehen können , fordert das Projekt eine Liste von Berechtigungen an, es gibt Symbole, Text. Man kann sogar sagen, dass es gut aussieht.

Installieren


Sie können die Quelle einfach in Ihr Projekt ziehen. Hierbei handelt es sich um einen Ordner mit strukturierten Dateien. Und Sie können keinen Unsinn erleiden , um eine Bibliothek mit CocoaPods zu erstellen . Vor- und Nachteile werden nicht über diesen Artikel berichten. Fügen Sie der Pod- Datei eine Zeile hinzu:

pod 'SPPermission'

Abhängigkeiten aktualisieren und aktualisieren. Wahrscheinlich ist dies der schwierigste Schritt von allen bevorstehenden

Wir benutzen


Wenn Sie einfach Dateien in das Projekt gezogen haben, ist das SPPermission- Modul bereits verfügbar. Wenn Sie keinen Unsinn hatten, verwenden Sie CocoaPods . Dann sollten Sie die Bibliothek in den Controller importieren:

import SPPermission

In der viewDidAppear- Funktion rufen wir nun folgende Konstruktion auf:

override func viewDidAppear(_ animated: Bool) {
      super.viewDidAppear(animated)
      SPPermission.Dialog.request(
            with: [.camera, .calendar, .notification], 
            on: self
      )
}

Wir übertragen die Liste der Berechtigungen und den Controller, auf dem das Dialogfeld angezeigt wird. Es bleibt das Projekt auszuführen.

Anpassung


Wenn Sie, lieber Freund, mit Tabellen oder Sammlungen gearbeitet haben, werden die Wörter Delegate und DataSource nicht erschrecken. Und wenn Sie ein wenig mit Mustern besessen sind, dann schreien Sie sogar:

- „ Wow! Protokollorientierter Ansatz!

Siehst du! Sehen? Und ich sagte, es wäre nicht lustig. Aber einmal in dieser Zeile lesen, dann machen Sie weiter.

Beginnen wir mit dem SPPermissionDialogDataSource- Protokoll . Es ist für die Anpassung des Dialogfelds verantwortlich und ermöglicht eine loyalere Integration der Bibliothek in das Projekt. Schauen wir uns die Parameter an:

@objc public protocol SPPermissionDialogDataSource: class {
    @objc optional var dialogTitle: String { get }
    @objc optional var dialogSubtitle: String { get }
    @objc optional var dialogComment: String { get }
    @objc optional var allowTitle: String { get }
    @objc optional var allowedTitle: String { get }
    @objc optional var bottomComment: String { get }
    @objc optional var showCloseButton: Bool { get }
    @objc optional func name(for permission: SPPermissionType) -> String?
    @objc optional func description(for permission: SPPermissionType) -> String?
    @objc optional func image(for permission: SPPermissionType) -> UIImage?
}

Um ehrlich zu sein, sehe ich keinen Grund, auf jeden einzugehen, wie ihre Namen sagen. Wir analysieren ein paar mehrdeutige: bottomComment und showCloseButton .

Der erste Parameter ist für den Kommentar unter dem Dialogfeld verantwortlich. Dort können Sie beispielsweise die Eingabeaufforderung " Zum Schließen wischen " eingeben : Der



zweite Parameter showCloseButton ist für die Schaltfläche Schließen in der oberen rechten Ecke des Bildschirms verantwortlich. Ich habe auch ein Bild mit einem Beispiel:



Einige Funktionen erlauben die Rückgabe von nil . Dies ist erforderlich, wenn Sie nicht alle Titel / Symbole oder Text anpassen müssen. Es reicht aus, den Wert null zurückzugeben , um den Standardwert zu belassen:

func description(for permission: SPPermissionType) -> String? {
      if permission == .calendar {
            return "Календарь"
      } еlse {
            return nil
      } 
}

Es muss noch das DataSource- Objekt in die Hauptstruktur übernommen werden :

SPPermission.Dialog.request(
    with: [.camera, .calendar, .microphone, .notification],
    on: self,
    dataSource: self
)

Delegieren


Damit können Sie einige Ereignisse verfolgen. Schauen wir uns das Protokoll an:

@objc public protocol SPPermissionDialogDelegate: class {
    @objc optional func didHide()
    @objc optional func didAllow(permission: SPPermissionType)
}

Hmm, nicht viel ... Aber was brauchst du sonst noch?) Ich muss nicht erklären, bei welchen Ereignissen die Funktionen ausgelöst werden. Die Namen sprechen. Passen Sie auf - der Delegierte darf nicht vergessen zu spezifizieren:

SPPermission.Dialog.request(
    with: [.camera, .calendar, .microphone, .notification],
    on: self,
    delegate: self
    dataSource: self
)

Berechtigungen




Die Liste wird aktualisiert, falls es Wünsche oder Kritik an der Bibliothek gibt, lohnt es sich, hier ein neues Problem zu erstellen .

Brötchen


Es lohnt sich, auf die nützliche Funktion zu achten:

func isAllow(_ permission: SPPermissionType) -> Bool

Sie werden informiert, ob der Benutzer die Berechtigung erteilt hat. Um die Loyalität zu erhöhen, wird empfohlen, Berechtigungen nicht vor einem Bündel, sondern vor der Verwendung anzufordern. Und nicht mehr als 3 ex! Es fällt mir zwar schwer, an eine Situation zu denken, in der ich mehr brauche.

let isAvailableCamera = SPPermission.isAllow(.сamera)

Warum wurde es aktualisiert?


Die alte Version sah so aus, und vielleicht war es vor einem Jahr nichts.



Eigentlich habe ich sie ein Jahr lang nicht aktualisiert (na ja, tun Sie nicht so, als hätten Sie nicht verstanden, dass ich der Autor der Bibliothek war), und kürzlich erhielt ich einen Brief ... obwohl wir etwas später über diese Geschichte schreiben . Wir machen hier ernstes Geschäft!

Architektur


Vor ungefähr einem Jahr schrieb ich einen Artikel, in dem ich direkt gegen Liebhaber des ungerechtfertigten Gebrauchs von Architektur verstoßen wurde. Aber ich dachte nur so, und die Hauptbotschaft wurde nicht gehört. Mein Wunsch, dieses Jahr zu vereinfachen, hat nicht aufgehört. Als ich an ein Redesign dachte, wurde mir klar, dass das Projekt komplett neu geschrieben werden musste. Dies ist eine Art Bohrgerät mit der Fähigkeit, Radio zu hören, Gemüse zu schneiden und ein Heizgerät auf dem Boden abzustellen. Ich habe es ein Jahr später gesehen! Nun, es scheint mir dumm zu sein, diesen Artikel zu schreiben , der ein so kompliziertes Beispiel hat. Wahrscheinlich werde ich in einem weiteren Jahr alles noch einfacher machen. Wir werden sehen)

Also, was ist die Geschichte?


Tutorial sobsna ist zu Ende und wir wenden uns dem Geschwätz zu. Vor einigen Wochen erhielt ich einen Brief, in dem ich gefragt wurde, wie die Bibliothek funktioniert. Es war eine seltsame Frage, und da ich die Bibliothek aufgegeben hatte, beantwortete ich einfach die Beispielfrage:

Lieber Freund, ich unterstütze die Bibliothek jetzt nicht, ich habe keine Freizeit. Haben Sie einen schönen Tag "

Das ist richtig und hat nur in Zabugorsk geschrieben. Und vergessen Nachdem ich Mohn getreten hatte, sah ich etwa ein Dutzend !!! Nachrichten im Spam-Ordner. In Ordnung, offensichtlich wurde eine Art Portal verkauft, wie kann ich das Mailing jetzt abbestellen? Und nnnet ... Ich habe den gleichen Typen geschrieben, nur diesmal in Wut. In den Briefen, die ich erfuhr, dass ich nicht der Autor der Bibliothek war (und daher konnte ich es nicht sagen), habe ich gelernt, dass Leute wie ich die schrecklichsten Leute sind (und wir müssen die Registrierung auf GitHub verbieten). Ich habe gelernt, dass ich viel Geld für meine wertlose Arbeit will. Geld Auf der alten Seite gab es nicht einmal ein Donat-Formular. Aber ich habe den Punkt verstanden, der Mann war nur wütend.

Ich entschloss mich zu helfen, aber nicht aus Freundlichkeitsgründen - ich war unglaublich daran interessiert, was für unglaubliche Dinge angepasst werden mussten, was eine große Wutwelle auslöste. Es stellte sich heraus, dass er nach einer Methode suchte, die aufgerufen wird, wenn das Dialogfeld geschlossen wird. Mein Lachen durch die Tränen hatte keine Grenzen! Der Delegierte wurde in der ersten Version beschrieben.

Die Geschichte ist traurig, aber noch trauriger! Ja Ja! Ich habe ihm persönlich ausführlich beschrieben, wie man mit Delegierten sozusagen einen allgemeinen Kurs verwendet. Ich habe die Gelegenheit nicht verpasst, verrückt zu werden und sagte, dass das alles von Anfang an auf der Hauptseite des Projekts stand. Ich erhielt die Antwort ... aber ich wollte noch mehr weinen:

- “ Ich habe vor kurzem mit dem Programmieren angefangen und möchte die Dokumentation nicht verstehen. Auf Wiedersehen “,

lachte ich lange.

Wir sind fertig


Ein kurzes Schulungsprogramm wurde eingeführt, um aufmerksam zu sein, verlasse ich den Zeitraffer mit dem Design (ich lecke skrupellos die Einrückungen und Farben aus den E-Mail-Anwendungen) und das Tutorial , das alles, was ich hier beschrieben habe, klar und deutlich zeigt.

Alle erfolgreichen Migrationen zum neuen Swift!

Jetzt auch beliebt: