• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    ONDRAPiPod, iPhone, iPad Development
    Let's send Apple to bottomless perdition, there to dwell.

    Vše o tomto ďábelském stroji. Objective-c, c++/c, Arm asm, NEON asm.
    Cocoa, OpenGL ES & Apple Extensions.

    "Veselé" historky z natáčení, aneb
    jak se to dá ještě udělat, aby nám to apple nezakázal.
    Privátní api a funkce, které bysme z něho chtěli.

    Grafici vítaní.

    Prosím lidi, co založili firmu, nebo se živí jako freelancer ať se podělí o své zkušenosti s ostatními.


    Aplikace v Appstore od lidí z nyxu:

    První vlaštovka:

    ALIJEN: aplikace Výplata -- http://itunes.apple.com/cz/app/id353881293?mt=8

    Posílejte odkazy na appstore do pošty nebo sem. Díky
    rozbalit záhlaví
    ONDRA_99
    ONDRA_99 --- ---
    MALER: Jako u Vas to asi nehrozi, pac to pouzivat "musi". Ale obecne mne prijde, ze vydat "shit" (neoptimalni) app s tim, ze casem udelam lepsi, vede akorat k tomu, ze si to uzivatel po vyzkouseni smaze a nebude moc ochotny po zmene znovu zkouset.

    Osobne jsem zastance nazoru, ze cpat neco do appstore jen aby to bylo v app store je spatne premysleni.
    MALER
    MALER --- ---
    ZVIRATKO: Pozadavek mngmnt je, aby to bylo na App Store, cemuz i vcelku rozumim, misto "stahnete si to tam, co ste si stahl Fejsbuk" jim rikat "pripojte se sem, ted klepnete tady a voila!, ikonka je tam" moc pruchozi nejde. To je skoro jak rumunskej virus.

    TIGU: Toho jsem si vedom. Tak proste moc nevim, zda takovy ty "webovy udelatory" na appku jeste vlastne realne fungujou, nebo ne, no. Protoze to by v tento okamzik byla pro me idealni varianta, si to skrz to naklikat a poradnou apku resit az budou $ a HR.
    TIGU
    TIGU --- ---
    MALER: Záleží na koho narazíš. Obecně by měli zkoumat, zda ta app poskytuje něco víc, než jen web. Je velká šance, že to neprojde.
    ZVIRATKO
    ZVIRATKO --- ---
    MALER: tak nedelejte appku ale udelejte z toho webclip, ne?
    MALER
    MALER --- ---
    Omlouvam se za "dummy" otazku. Mame pro nasi rekuperacni jednotku webove rozhrani pro jeji ovladani. Jelikoz naz tlaci cas, tak idealni varianta by byl jen wrapper, ktery bude zpristupnovat ono webove rozhrani (pristupne pres login). Vim, ze podle developer guidelines by se takoveto appky delat nemely, ale zajima me, jak to teda s tim je, zda Apple skutecne takoveto appky ze schvalovani vyrazi? Diky
    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.
    Kliknutím sem můžete změnit nastavení reklam