Amarengo

Articles and news

Miten-rakentaa iOS Share laajennus Swift

alun perin julkaissut Scotty Fister 30. heinäkuuta 2016 24 887 lukee

Huom: päivitetty Swift 4.

hakkeripäivänä töissä päätin kokeilla oman osakkeen laajentamista. Huomasin, että siellä ei ollut täysin varustellun opetusohjelman siellä, ja sen seurauksena minun piti koota tietoja (suuri osa siitä johtuu, yllättäen, Apple-dokumentaatiosta).

tavoite

tallentaa verkkosivun URL-osoite rikkaana sisältönä sovellukseemme ja mahdollistaa muutaman vaihtoehdon konfigurointi. Aluksi ajattelin laajennus toimi oli mitä tarvittiin-mutta näyttää siltä, että sopii paremmin muokkaamalla sisältöä (kuten poistamalla red-eye valokuva yhdellä napautuksella). Näyttää siltä, että muut, Apple mukaan lukien, käyttävät share laajennus luoda kohteita sen sijaan.

tämän olemme rakentaneet loppuun mennessä:

täydennetty laajennus

kuten näette, olen muokannut muotoilua hieman ja lisännyt siihen niin sanotun” asetuskohteen”, joka on arkin alareunassa olevia soluja; käytetään yleisesti tilien tai muiden vaihtoehtojen valitsemiseen. Sitä käytetään tässä valita käyttäjän olemassa ”kannet”tallentaa. Mitä et näe on se on myös käynnissä joitakin JavaScript-koodia hakea nykyisen URL selaimen, jonka lähetämme palvelimelle myöhemmin. Hoidamme tämän kaiken eteenpäin!

alkuvaiheet

Luo uusi projekti tai avaa olemassa oleva projekti, johon haluat lisätä laajennuksen. Sitten osuma tiedosto > Uusi > kohde. Valitse iOS-välilehdellä Jaa laajennus ja paina Next. Anna sille nimi; valitsin yksinkertaisen ”ShareExtension”.

se kysyy, haluatko aktivoida järjestelmän. Tämä tarkoittaa, että kun suoritat sovelluksen, voit avata sen suoraan Safariin tai vastaavaan testataksesi laajennusta, toisin kuin pääsovelluksesi. Haluamme tämän käynnistyvän.

Testaa, mitä olet tähän mennessä tehnyt ajamalla projekti Cmd + R — kuten mainittu, se antaa sinulle vaihtoehtoja, mistä sovelluksesta testaat, valitse Safari ja napauta Run.

valintaikkuna, joka esitetään ajettaessa laajennusta.

kun Safari aukeaa, napauta Jaa-kuvaketta ja lisänimesi, jossa on paikkamerkin kuvake, tulisi näkyä luettelossa. Jos ei, napauta Lisää ja ota se käyttöön. Napauttamalla kuvaketta esittää Slcomposeserviceviewcontrollerin oletustoteutus, joka on melko siisti heti kättelyssä.

URL-osoitteen saaminen

Jaa-arkki hakee automaattisesti sivun otsikon ja asettaa sen kehotekstiksi, mutta yleensä haluat enemmän — oli se sitten URL tai kuva sivulla. Tätä varten voit olla Safari ajaa JavaSript tiedosto jäsentää asiakirjan ja hakea mitä tarvitsemme.

napsauta ensin hiiren kakkospainikkeella Xcode-tiedostopäätteesi kansiota ja valitse uusi tiedosto. Löydät tyhjä sisällä toisen välilehden, osuma Seuraava ja nimi tiedosto ” GetURL.js”.

sinun täytyy muokata laajennustietojasi.plist tiedosto ja ” NSExtension ”on toinen sanakirja nimeltään” NSExtensionAttributes ”— lisää avain” Nsextensionjavascriptpresprocessingfile ”arvo tiedostomme juuri luotu,” GetURL ” (huomaa puute laajennus).

lisää myös sanakirjarivi ”NSExtensionActivationRule”, joka sisältää avaimen ”Nsextensionactivation Supportsweburlwithmaxcount” ja numeron 1:

miten jatkoaika on Info.plist pitäisi katsoa, kun sitä tarkastellaan ominaisuusluettelona

Nsextensionjavascriptprescessingfile: tämä antaa sovelluksemme tietää JavaScript-tiedostosta, joka tulisi suorittaa laajennuksen suorittamisen yhteydessä.

NSExtensionActivationRule: käytä tätä sanakirjaa lisätäksesi toiminnan Laajennusavaimia, joiden avulla järjestelmä voi määrittää, mille sisällöntyypille laajennus aktivoidaan.

liitä seuraava ” GetURL.js”:

yhdessä edellä asetettujen avainten kanssa iOS etsii nyt objektia nimeltä ”Extensionprocessingjs” suorittamaan suorituksen aikana. Asiasta kerrotaan tarkemmin Applen dokumenteissa.

hakeaksesi yllä olevalla javascript-tiedostolla raaputetut tiedot, sinun täytyy suorittaa tämä koodilohko ” ShareViewController.swift ” viewDidLoad-toiminto:

tarvitset myös tämän tuonnin kuttypepropertylistille:

import MobileCoreServices

käynnissä laajennus nyt pitäisi onnistuneesti tulostaa URL konsoliin!

sivuhuomautus: lisää seuraava pätkä, jos haluat muokata navigointipalkkia kuten olen (korvaa omalla kuvalla tai vain otsikolla).

Konfiguraatiokennojen lisääminen

jakolaajennuksen luomisen mukana tullut kattilalevy on sisältänyt menetelmän konfiguraatiokohteiden valinnaiseen toimittamiseen (Jaa-taulukon alareunassa olevat solut)

override func configurationItems() -> ! {

Aseta alla oleva pätkä, joka palauttaa joukon ”SLComposeSheetConfigurationItem”:

Suorita sovellus uudelleen ja näet solun alareunassa nyt.

Kokoonpanokohteen

malli luo perusmallin nimeltä ” Deck.swift”, jota käytetään eteenpäin tietojen siirtämiseen näkymäohjaimien välillä.

Taulunäkymä

gif: n alussa, olet huomannut, kun naputat asetussolua, jonka se työntää uuteen näkymään taulunäkymällä. Luo uusi tiedosto, joka perii ”UIViewController” nimeltään ” ShareSelectViewController.nopea”. Luo taulunäkymän ominaisuus ja lisää se näkymään.

olen asettanut myös otsikon ja otsikon värin tälle näkymälle, ja pidän mieluummin vakiot, kuten solutunnisteet, strukturoituna:)

luo ominaisuus, joka tallentaa kannen kulkeneen sisään alkuperäisestä näkymäohjaimesta:

var userDecks = ()

ja mukaudu taulukkokatsauksessa vaadittuihin protokolliin:

Takaisin ” Shareviewcontrollerissa.swift”, luoda ominaisuus tallentaa joitakin dummy data ja kansoittaa sen sisällä viewDidLoad:

lopuksi, sisällä tapHandler varten kokoonpano kohde loimme, luoda instanssi ShareSelectViewController ja antaa sen painaa hanasta, kulkee kannet samoin:

Suorita sovellus. Määrityssolun napauttamalla pitäisi siirtyä taulukkonäkymään valetiedon kanssa.

kuitenkin huomaat kokoonpano solu on edelleen kovakoodattu ”kannen Otsikko”. Jos haluat saada tämän päivityksen, luo ominaisuus, joka tallentaa valitun kannen ja valitse oletusarvoisesti ensimmäinen:

ja päivitä konfiguraatiosolu konfiguraatiositemien sisällä() käyttääksesi sitä:

deck.value = selectedDeck?.title 

Suorita sovellus uudelleen ja näet, että se on päivitetty.

protokolla valitun kannen

päivittämiseen tarvitset tavan hylätä Takaisin Shareviewcontrolleriin, kun uutta pakkaa naputetaan, ja pyytää sitä päivittämään käyttöliittymän. Protokolla riittää. Lisää seuraava Shareselectviewcontrolleriin:

lopuksi, Mukauta ShareViewController juuri tehdyn protokollan mukaiseksi ja varmista, että Shareselectviewcontrollerin valtuutettu asetetaan itse:

valittu kansi päivitetään ja asetuskohteet Ladataan uudelleen arvon päivittämiseksi. Sitten piipahdamme takaisin päänäytölle.

Suorita sovellus Ja nyt pitäisi pystyä vaihtamaan kantta, joka päivittyy näyttämään oikein valitun kannen 🙂

viimeistely

kaikki mitä on jäljellä on lähettää kerätyt tiedot palvelimellesi tai sovelluksellesi tehdä jotain, jonka voit tehdä toisen boilerplate-menetelmän sisällä:

override func didSelectPost()

en mene yksityiskohtiin tästä, mutta käytin NSURLSession lähettää palvelimellemme. Olen myös korvannut nuken tiedot todellisilla kansilla luomalla sovellusryhmän ja käyttämällä jaettua NSUserDefaults tallentaa ja hakea tietoja aiemmin haettu sisällä tärkein iOS-sovellus.

let userDefaults = NSUserDefaults(suiteName: "some.group.name")
let decks = userDefaults?.objectForKey("userDecks") as? NSArray

lopuksi, huomaat minun laajennus on nimeltään” Vurb ” toiminta-ikkunassa, ja on kuvake. Voit asettaa ikonin seuraamalla tätä niin lähetä. Ja muuttaa nimeä yksinkertaisesti muuttaa ”Näytä nimi” projektin asetukset laajennus.

That ’s everything, if you found this avulias please help other’ s find it by recommending.

voit katsoa projektin kokonaisuudessaan täältä.

tunnisteet

Join Hacker Noon

Luo ilmainen tili avataksesi mukautetun lukukokemuksesi.

Vastaa

Sähköpostiosoitettasi ei julkaista.