• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    ONDRAPiPod, iPhone, iPad Development
    MIKEONE
    MIKEONE --- ---
    Zdar vsem,
    spachali jsme iOS apku jako klon nasi Androidi muzutozvednout.cz, nemel by nekdo prosim zajem o kratke testovani na Apple mobilu? Do posty prosim, diky ;).
    ZVIRATKO
    ZVIRATKO --- ---
    AILAS: presne tak. Ale bude existovat framework primo od Apple protoze odemykani hodinkama - a to znamena podepsat unlock message na hodinkach klicem v SE. Stejne tak existuje nejakej komunikacni framework na schvalovani iCloud keychainu - to by se mozna taky dalo pouzit (samozrejme netusim jestli tyhle API jsou public, tipuju ze ne).

    Jde mi o tohle. Hodne adminu kolem me pouziva MacOS. Hodne adminu kolem me pouziva nejakou smartcardu (Yubikey, eToken apod.). Vetsina z nich neni spokojena s tim jak to funguje a navic na novejch noteboocich s USB-C je potreba redukce (cest Yubikey, ty udelali USB-C token, nevim jestli uz ho ma nekdo jinej). Pritom je to cely zbytecny, iOS zarizeni, resp. jejich SE, je bezkonkurencne to nejbezpecnejsi kam schovat nejakej klic nebo secret a primo se to nabizi k takovyhlemu pouziti. Koneckoncu i Apple k tomu smeruje - telefon jako ID, kreditka, hodinky na odemykani MacOSu (nevim proc hodinky a ne telefon, asi jen aby to lidi koupili).

    Takze by me hodne lakalo neco takovyho navrhnout a nakodit, myslim ze by si to hodne lidi i koupilo pokud by jim to nahradilo tokeny. A mozna by je to nahradilo i oficialne protoze SE ma certifikaci FIPS-3 tusim, takze je to na stejny urovni jako ty smartcardy.
    AILAS
    AILAS --- ---
    LWEEK: už mnoho let existuje MacID které počítač odemkne tak, jak chce ZVIRATKO a žádná bezpečnostní hrozba to není, natož velká. Musíš si to sám nainstalovat a nastavit. Ten load z iOS keychainu by asi taky šel, ale ne že by se s tím někomu chtělo asi s*át :-)
    ZVIRATKO
    ZVIRATKO --- ---
    LWEEK: to neni primo keychain - napriklad kdyz vlozis PIV token s nahranym certifikatem + klicem tak v Keychain nic z toho neuvidis (to je prave zmena v Sierra). Tokend pluginy jsou zpusob jak se implementujou jiny nez PIV smartcardy (tusim ze jenom PIV umi ted MacOS out-of-box). Na tom uplne neni nic nebezpecnyho, ono te to nepusti k celymu Keychainu.
    To je jedna moznost.

    Druha moznost je udelat nahradu ssh-agenta, co se bude pres nejakej socket (nebo API) bavit s tou iOS appkou.

    Treti moznost je udelat PKCS#11 knihovnu, ktera se bude pripojovat na tu iOS appku. (tohle by bylo krasny, ale obavam se ze slozitiy) - Tohle by melo tu vyhodu, ze by to fungovalo treba ve Firefoxu, ale zas by byl problem s nativnima appkama...
    LWEEK
    LWEEK --- ---
    ZVIRATKO: Rozumím. Takhle, myslím si, že to není technicky řešitelný jinak než ve spolupráci s Apple. Protože kdyby jakákoliv aplikace mohla manipulovat s keychainem nebo odemykat user account, tak bych to považoval za velkou bezpečnostní hrozbu.

    OUPA: Když neměním počet položek tak se to chová v pohodě. I reload. Problém je, že mám vertikálně i horizontálně jiný počet položek. Snažim se implementovat view, ve kterém jsou vypsané tagy, a view je omezený na dva řádky s tím, že poslední cell má být tlačítko na rozbalení všech tagů. Samozřejmě je tu možnost to řešit tak, že bude tlačítko podtím a prostě se budou v datasource posílat všechny tagy a zakážu scrolování. Ale chtěli jsme na screenu ušetřit veritální místo.

    Ještě mě teď napadl jiný hack. Vykreslím všechny, jen jeden cell uměle přehodím na to tlačítko a zakážu scrollování. Tím se vyhnu tomuhle UICollectionView bugu.
    ZVIRATKO
    ZVIRATKO --- ---
    LWEEK: no jak fungujou Smartcardy, resp. napr. USB tokeny vis? Tak si predstavuju stejnou funkcnost z pohledu uzivatele MacOSu, s tim ze ulozistem klicu je nejaky iOS zarizeni a jeho Secure Element.
    LWEEK
    LWEEK --- ---
    ZVIRATKO: Kecám, teď jsem si uvědomil, že Wormhole funguje jen v App groupách. No, nejsem si úplně jistý zadáním. Respektive co má být funkčnost, když si odmyslíš technické věci.
    ZVIRATKO
    ZVIRATKO --- ---
    LWEEK: jo to vypada pouzitelne

    ja ale nejsem developer, proto me zajima odhad jak slozity by to bylo realne napsat :) (budte pesimisti)
    ZVIRATKO
    ZVIRATKO --- ---
    LWEEK: uplne idealni by bylo napsat Tokend plugin, ktery by v pripade pritomnosti sparovaneho zarizeni naplnil dostupne certifikaty/keys do keychainu, v pripade pokusu o pouziti vyskocila na iOS zadost o TouchID (nevim jestli vubec na iOSu neco takoveho jde). Pripadne by se to odmeknulo na X hodin pro pouziti a fungovalo i po odpojeni...
    LWEEK
    LWEEK --- ---
    ZVIRATKO: Můžeš použít Wormhole. Používá to zabezpečený systémový messaging. https://github.com/mutualmobile/MMWormhole
    ZVIRATKO
    ZVIRATKO --- ---
    LWEEK: to pouziti SE je pomerne standardni, jediny co je nestandardni je ta proxy na MacOS pro konzumaci napr. SSHckem (i kdyz si predstavuju pouziti i napr. pro Mail.app - proste smartcarda). Snazil jsem se jako laik googlit jestli je nejaky framework na komunikaci MacOS x iOS (napriklad pres Cloud keychain) ale jak tomu nerozumim tak to nenajdu.
    LWEEK
    LWEEK --- ---
    ZVIRATKO: Největší problém vidím v tom samotném odemčení. Pochybuji, že by Apple nechal tyhle APIčka public. Zbytek dotazu mi přijde jako relativně v pohodě do-able.
    LWEEK
    LWEEK --- ---
    OUPA: didRotateFromInterfaceOrientation: je od iOS9 nebo 10 tuším deprecated. Teď to nahradilo
    willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator)
    a
    traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?)

    Nicméně to zkouším různě přes to a nic. Vysloveně tam je nějaký kix.
    ZVIRATKO
    ZVIRATKO --- ---
    Mam laicky a trochu naivni dotaz :-)

    Kolik prace by dalo vyrobit appku, ktera by fungovala jako ssh-agent k MacOS? Predstavuju si to tak, ze by klic byl ulozenej (nebo wrappovanej) v Secure Elementu, a ten klic by byl k dispozici pokud je telefon u pocitace (komunikace idealne pomoci BLE). V podstate bych chtel z iOS zarizeni udelat token. Vypada to, ze v Sierra uz je docela dost infrastruktury co by bylo potreba (napriklad pro unlock pomoci Apple Watch), a fyzicky tokeny v podstate taky jenom INSERTnou svoje klice do DB aby je keychain mohl pouzit.
    Tzn. nemusel by se psat asi ani ssh-agent pokud by se dal tenhle framework na to pouzit, pokud by se priblizilo zarizeni s klicem tak by se proste objevil transparentne v keychainu a (napr. po unlocku TouchID) by byl okamzite k pouziti.
    OUPA
    OUPA --- ---
    LWEEK: Asi bych se zameril na tu rotaci, tzn. nejdriv poradne odladit zvlast obe polohy. Detekce rotace pres zmenu bounds je pro me neznamy koncept, delal jsem to vzdy pres didRotateFromInterfaceOrientation (nove je to viewWillTransitionToSize - poskytuje coordinator, ktery ma completion block)
    LWEEK
    LWEEK --- ---
    OUPA: Pokusim se.

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    let numberOfItems = numberOfItemsThatFit(lines: 2, data: data, collectionWidth: collectionView.bounds.width)
    return numberOfItems
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    // standardni kod co vraci celly
    }

    a potom v UICollectionView forcuju reload, kdyz se zmeni bound.

    override var bounds: CGRect {
    didSet {
    self.reloadData()
    }
    }

    Zlastni je to chovani. Ze se zavola numberOfItemsInSection:, vrati spravnou hodnotu, ale cellForItemAt: se zavola jen tolikrat co byla puvodni hodnota, coz nedava vubec smysl. Protoze pri reloadu se prece vzdycky zavola numberOfItemsInSection: a az potom se servirujou celly? Leda by byl problem ze je ten UICollectionView zrovna v rotaci a animuje se.
    OUPA
    OUPA --- ---
    LWEEK: To by asi chtelo cely kod nebo pseudokod. S UICollectionView jsem si uzil dost, ale vzdy to byl nakonec muj problem nebo nepochopeni.
    LWEEK
    LWEEK --- ---
    Další divnost na kterou jsem narazil. Mám UICollectionView, při rotování se reloaduje. Respektive volá se:

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int

    A hned na to

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell

    Což je fajn, jenže v mé aplikaci zobrazuju vertikálně a horizontálně jiný počet Cellů. numberOfItemsInSection vrací správný počet, ale cellForItemAt se zavolá Xkrát podle staré hodnoty.

    Konkrétněji. Vertikálně zobrazuji 7 prvků. Když zrotuji, chci zobrazit 14 prvků. Counter se zavolá v pořádku, ale vykreslí se jen 7 cellů protože cellForItemAt se zavolá jen 7 krát. A při rotaci zpět to krašne.

    Narazil na tenhle divný problém někdo?

    GIOMIKY
    GIOMIKY --- ---
    Nic, za me koncim tema Fiverr.com to jisti. Diky moc!
    GIOMIKY
    GIOMIKY --- ---
    GIOMIKY: Jenom je to moc velkej traffic. A potrebuji to i na edge. :(
    Kliknutím sem můžete změnit nastavení reklam