Jeśli chcecie mnie wesprzeć to zapraszam do kupna mojego poradnika "Jakim jesteś Makiem?".

Wszystko o iOS 8 beta / OS X Yosemite beta Extensions

· Wojtek Pietrusiewicz · 16 komentarzy

Wiele się zmieni w nadchodzących miesiącach dla użytkowników iOSa dzięki nowym możliwościom budowania Extensions / Rozszerzeń, dzięki którym aplikacje będą mogły się ze sobą komunikować na różne sposoby. Dotychczas ograniczenia wynikały głównie z sandboxów, w których poszczególne programy były zamknięte – nowe rozwiązanie jednak nie zmniejszy bezpieczeństwa mobilnego system operacyjnego Apple ani prywatności użytkowników. W zapomnienie też prawdopodobnie odejdą niestandardowe sposoby komunikacji przez x-callback-url. Wszystko jednak będzie zależało od kreatynowści developerów – mają teraz kilka miesięcy, aby zacząć wprowadzanie zmian na przyszłość. Nie jest to jednak proste, bo iOS do czasu wydania oficjalnej wersji 8.0 będzie się zmieniał i może się zdarzyć, że będą musieli część swojego kodu przepisać. Realnie rzeczy biorąc spodziewałbym się zaawansowanych rozszerzeń pod koniec 2014 roku.

Extensions oraz ich rodzaje

Extensions w iOS 8 umożliwiają rozszerzanie funkcji aplikacji oraz iOS, ale nie będą to osobne aplikacje jak w przypadku dzisiejszych Safari Extensions… Muszą być częścią istniejących lub nowych aplikacji. Developerzy nie będą też mogli tworzyć “pustych” programów tylko celem stworzenia Rozszerzenia. Zostaną one też usunięte z systemu wraz z odinstalowaniem danego programu. Nie będą też dostępne w każdym miejscu iOSa i OS X.

Extensions dzielą się na kilka różnych typów:

  • Today View w Notification Center (dla iOS i OS X) – widgety dla widoku Dzisiaj w Centrum Powiadomień
  • Share (dla iOS i OS X) – opcje dzielenia się treściami w internecie lub innymi aplikacjami
  • Actions (dla iOS i OS X) – Rozszerzenia dla aplikacji, które umożliwią edycję ich treści w innych aplikacjach
  • Photo Editing (tylko iOS) – edycja zdjęć lub filmów w Photos.app za pomocą Rozszerzeń z innych programów
  • Custom keyboards (tylko iOS) – możliwość korzystania z alternatywnych klawiatur
  • Storage Provider (tylko iOS) – możliwość wymieniania się plikami pomiędzy różnymi aplikacjami
  • Finder Sync (tylko OS X) – zarządzanie i synchronizacja treści z innych chmur w Finderze

Ciekawym wynikiem Photo Editing oraz Action Extensions jest fakt, że wyklucza to konieczność wysyłania treści do innego programu – role zostały odwrócone i to aplikacje będą “wzywane” do manipulowania treściami w tych, w których user aktualnie się znajduje. To trochę podobne do tego co Microsoft obiecywał w Windows Phone 7 oraz jego Hubach, a co w końcu umarło śmiercią naturalną. W przypadku Apple nie powinno być żadnych problemów z taką implementacją, ponieważ aplikacje nadal zachowają swój UI przy wywoływaniu Rozszerzeń, a sam App Store ma znacznie większą ofertę niż sklep Microsoftu wtedy miał.

Wszystko o iOS 8 Extensions iPhone 01

Widgety w Today View

Extensions dla Notification Center, dla widoku Today, będą w formie widgetów znany z innych systemów operacyjnych, jak chociażby Androida. Różnice jednak będą znaczne. Przede wszystkim będą się pojawiały i znikały zależnie od sytuacji, w której się znajduje user, ale to on będzie miał nad nimi kontrolę – ich kolejność oraz czy w ogóle mają się pojawiać oraz kiedy. Przykładowo, jeśli za godzinę będzie kończyła się aukcja, w której user bierze udział, to może pojawić się (jeśli tak zdecyduje w ustawieniach) odpowiedni widget z opcją podbicia oferty. Jeśli trwa wyścig Formuły 1 to pojawi się widget, który będzie przykładowo pokazywał pierwszych trzech kierowców. Będzie też możliwość tworzenia bardziej tradycyjnych widgetów i spodziewam się, że ludzie będą unikali ich jak ognia, poza naprawdę wybranymi i pojedynczymi sytuacjami dla najbardziej ulubionych aplikacji. Tutaj przykładem mogą być żarówki Philips Hue, które mogą wyświetlać dwa lub trzy przyciski, które wywołają nasze ulubione konfiguracje.

Share Extensions

Wprowadzanie tego Rozszerzenia pozwoli Apple uwolnić się od integrowania podobnych serwisów do obecnie zaimplementowanych Twitterów, Facebooków i innych. Dzięki temu wszelkie mniej popularne oraz znane serwisy, po zainstalowaniu ich aplikacji, będą automatycznie pojawiały się na Share Sheets, znanych zarówno z OS X jak i iOS. Jeśli chcemy coś wrzucić na Pinterest czy do Pocket to opcja ta pojawi się od razu po wciśnięciu przycisku Share (kwadrat ze strzałką skierowaną do góry). To odciąży zarówno developerów aplikacji takich jak Reeder, którzy obecnie muszą indywidualnie wprowadzać wsparcie dla wszystkich ważnych serwisów, jak i samego Apple, który prawdopodobnie z czasem zrezygnuje z wspierania Twittera, Flickr, Vimeo i Facebooka, a zrzuci to na barki tych serwisów.

Action Extensions

To chyba jedna z najciekawszych implementacji Rozszerzeń w iOS – umożliwi wykonywania na wybranych treściach pewnych operacji bez wychodzenia do innych aplikacji. Przykładowo, jeśli jesteśmy w Mail.app i chcemy komuś wysłać PDFa, to możemy go dodać jako załącznik, ale przy wysłaniem zmodyfikować go poprzez Rozszerzenie PDFpen albo innego zainstalowanego programu do tego celu. A treść samego e-maila będziemy mogli przetłumaczyć poprzez zainstalowany Bing Translate na wybrany przez nas język. Multitasking w obrębie jednego programu…

Photo Editing Extensions

To będzie prawdopodobnie jedna z częściej wykorzystywanych funkcji nowego systemu Extentions. Craig Federighi podczas WWDC pokazał jak to będzie działało – podczas edycji zdjęcia w natywnym Photos.app będziemy mieli możliwość dodania filtrów lub wykonania operacji na zdjęciu za pomocą innych programów. Użył Waterlogue [App Store link] oraz VSCOcam [App Store link] w swoim porównaniu.

Mistrzostwo świata – cała moc wybranych i dobranych przez userów modyfikacji w jednym miejscu.

Custom Keyboards

Z całego keynote na WWDC to ta funkcja mnie najbardziej zaskoczyła. Wsparcie systemu dla developerów będzie jednak bardzo ograniczone, a oni sami będą musieli wykonać większość prac. Szczegółowo opisałem to w “Wszystko o iOS 8”, w dziale “Klawiatura – QuickType”.

Wszystko o iOS 8 Extensions iPhone 02

Jedyną nowością, o której dowiedziałem się z filmów z WWDC, w tej kwestii jest to, że żadna klawiatura trzecia nie będzie miała praw do wpisywania treści do pól haseł (te ukrywające wpisywane znaki kropkami) – po przejściu do takiego pola zostanie wywołana klawiatura Apple. Możliwe, że to się jeszcze zmieni, ale cieszę się, że skupiają się przede wszystkim na bezpieczeństwie i prywatności nieświadomych userów.

Storage Provider Extension

To Rozszerzenie, które umożliwi aplikacjom dostęp do plików spoza swojego sandboxa, będzie dostępne tylko poprzez iOS Document Picker. Dzięki temu, będzie można pracować na jednym dokumencie, który będzie w iCloud lub innej chmurze (dzięki Extensions od Dropboxa, Box.net, itp.) z różnych aplikacji. To powinno uciszyć wiele narzekań na konieczność duplikowania plików lub ich przesyłania pomiędzy aplikacjami.

Finder Sync

Finder Sync jest skierowany dla takich programów jak Dropbox i podobnych, jak chociażby ostatnio opisywany przeze mnie Sync.com czy starszy Copy.com. Dropbox musiał sporo się napracować, aby wprowadzić możliwość nakładania informacji na ikonach folderów i plików w Finderze – teraz będzie to natywnie wspierane dla każdego developera, który chce robić podobne rzeczy.


Apple dosyć sztywno określił gdzie dokładnie będzie dostęp do poszczególnych rodzajów Extensions. Szkoda, że w niektórych wypadkach nie chcą być bardziej elastyczni, ale całkowicie rozumiem ich podejście – nie mogą przecież robić wyjątków dla wybranych developerów. Niestety, z tego powodu w Safari nie będzie dedykowanego przycisku do 1Password – zamiast tego trzeba będzie wcisnąć przycisk Share, aby odpalić Share Sheet, i dopiero tutaj 1Password będzie miał możliwość dodania przycisku, który automatycznie wprowadzi dane logowania do odpowiednich pól.

Dla odmiany, wszystkie nasze chmury powinny być dostępne w absolutnie każdej aplikacji i to bez wprowadzania specjalnego wsparcia od strony każdego developera – wystarczy mieć zainstalowaną aplikację do obsługi tej chmury, a będzie ona (po dodaniu przez nią Rozszerzenia) dostępna w systemie jako źródło danych dla apps.

Największy zawód prawopodobnie wyniknie z ograniczonych klawiatur producentów trzecich – sam nie planuję z nich w ogóle korzystać, poza testami oczywiście. Sam fakt, że nie będzie można do nich wprowadzić alternatywnych możliwości zaznaczania tekstu jest dużym minusem.

Pamiętajmy, że to dopiero pierwsze kroki z Extensions, które i tak zmienią funkcjonalność systemu dla bardziej zaawansowanych użytkowników nie do poznania. Powstaną zupełnie nowe workflows, które jednocześnie nie redukują bezpieczeństwa ani prywatności userów, i wierzę z czasem będą możliwe rzeczy, o których w Apple zupełnie nie pomyślano. Na obecną chwilę jednak wszystko leży w rękach programistów trzecich – ciężko ocenić jak to wszystko będzie wyglądało dopóki nie rozwiną swoich aplikacji i nie wprowadzą odpowiednich Rozszerzeń.


Źródła: iOS Dev Portal, WWDC 2014 videos, MacStories

Chcesz zwrócić mi na coś uwagę lub skomentować? Zapraszam na @morid1n lub na forum.

  • „żadna klawiatura trzecia nie będzie miała praw do wpisywania treści do pól haseł” – a ja tak bardzo liczyłem na taką „klawiaturę” od 1Password :/

  • Marbico

    Moridin, zamienione są linki VSCOcam z Waterlogue

  • januszp

    jak na razie to knot, chyba największy z wszystkich beta wersji, oby szybko wyszła dwójka, w ios 8 w zasadzie nic nie działa prawidłowo, czy ktoś w ogóle to sprawdzał przed udostępnieniem?

  • Pingback: Nowości iOS 8 skopiowano z Androida | Makowe ABC()

  • Nic nie musi działać prawidłowo bo to beta. Najwyraźniej nie każdy po tylu latach to zrozumiał.

  • januszp

    co za genialnie spostrzeżenie, ja uważam geniuszu, że nawet jeśli wypuszcza się wersję testową, to powinna choć w minimalny sposób umozliwić korzystanie z podstawowych funkcji, w przeciwnym razie lepiej poczekać , niż prezentować taki
    niewypał, no ale nie każdy to rozumie jak widać…..

  • Przede wszystkim istotne to są nowe API dla developerów.

  • Thanks, poprawione.

  • dc

    „Developerzy nie będą też mogli tworzyć “pustych” programów tylko celem stworzenia Rozszerzenia.”

    Co za bezsens! Ciekawi mnie gorliwość recenzji. Jeśli mam soft, która świetnie tłumaczy tekst to zamiast napisać usługę i zarejestrować ustawienia mojego programu do settingsów, muszę stworzyć jednak widok aplikacji? Ile aplikacji musi być w takiej aplikacji? Wystarczy jeden textbox i przycisk translate? Jeśli mam świetne algorytmy do obróbki zdjęć to nie mogę sprzedać tylko usługi? Muszę dorobić widok, który o zgrozo jest jednym wielkim odwołaniem do CameraApi?

    Rozszerzenia to świetny sposób na nowe metody *wprowadzania* danych. To wymaganie prawie zabija połowę pomysłów.

  • Takie aplikacje jak sugerujesz już są. Działają obecnie niezależnie, jak chociażby Google czy Bing Translate. Extension ma być lekk i zużywać minimalną ilość pamięci. Będzie też agresywnie zabijany przez iOS. To akurat bardzo dobry krok.

  • dc

    Absolutnie nie rozumiem Twojej odpowiedzi.
    Aplikacja tłumacząca nie ma sensu dla ergonomii. Zamiast przerzucać dane w tą i z powrotem chcę to zrobić w jednym miejscu. Niech na czas tłumaczenia Extension zje mi całe zasoby, dopóki to sprawi, że będzie lepiej działał. Po skończeniu akcji ma być zabity od razu i tak.

    Zresztą wybierasz jeden przykład a chodzi o cały problem – kiedy „aplikacja” do extension będzie niepusta? Jeśli wystarczy ikonka i panel ustawień to ok, inaczej to duże odejście od minimalizmu.

  • To Twój przykład, to po pierwsze. Po drugie, poczytaj sobie dokumentację – od tego jest.

  • dc

    Jeden z dwóch przykładów obrazujących problem. Jeśli nadal nie widzisz problemu aplikacji sztucznie tworzonych do usługi tylko wolisz zbaczać na technikalia to nie mam pojęcia po co zaczynać dyskusję.

  • januszp

    zgadzam się, korzystam z wersji beta od 3 lat, pierwszy raz po zainstalowaniu ios 8 beta1 nie mogłem wykonać żadnego połaczenia, bo pod ikoną tel otwierała mi się poczta, wiadomości w ogóle nie działają i brak możliwości przesuwania ekranów w lewo sprawił , że trochę mnie to zirytowało , zawsze
    instalowałem bety i przyjmowałem je z dobrodziejstwem inwentarza , ale teraz nie dało się użyć wersji choćby do dzwonienia, nadzieja , że beta 2 poprawi ten stan rzeczy , może już dziś…

  • Bety nie instaluje się by normalnie używać telefonu, tylko do przygotowania się developerów na nowy system. Beta może działać nawet gorzej niż chujowo bo ma do tego prawo a jeżeli chce się mieć stabilny system nie instaluje się jej. Coś nadal nie jest jasne?

  • Ja chciałbym tylko zaznaczyć, że beta (!) (1!) iOS8 i tak chodzi lepiej, niż ta sama iOS7, co zresztą powinieneś wiedzieć, jeśli instalujesz regularnie bety od paru lat. Spokojnie, jeszcze będziesz wychwalał 8, ale to jeszcze nie pora ;)