Ontwikkelingsoverwegingen over verschillende platforms

Dit artikel behandelt enkele van de concepten en beslissingen die betrokken zijn bij het ontwerpen van een mobiele app voor meerdere platforms. De besproken overwegingen hebben voornamelijk betrekking op een platformonafhankelijke applicatie gericht op Android en iOS, en het is geschreven vanuit het perspectief van een webontwikkelaar die zijn eerste stappen zet in de mobiele wereld. We zullen kijken naar enkele verschillen tussen de platforms en hun ontwerp van gebruikersinterfaces, en we zullen ook de voor- en nadelen van platformonafhankelijke ontwikkeling in het algemeen onderzoeken, evenals de specifieke details van veel van de meest populaire cross-platformframeworks..

Veel om over na te denken

Er zijn veel dingen te overwegen bij het ontwerpen van een mobiele app. Voordat u zelfs een draadmodel kunt opstellen of één regel code kunt schrijven, moet u nadenken over wat uw app zal doen, voor wie het bestemd is en waar het zal worden uitgevoerd. Misschien is een van de grootste beslissingen het platform (en) waarop uw toepassing zich richt. Er is veel om uit te kiezen: iOS, Android, MeeGo, WebOS, BlackBerry OS, Symbian, Windows Phone 7, Maemo en meer onderweg!

Natuurlijk zijn de meesten van ons alleen geïnteresseerd in de twee grote kanshebbers: iOS en Android. Als u wilt dat uw app of service het grootst mogelijke publiek bereikt, is ontwikkeling voor ten minste deze twee zinvol.

Platformoverschrijdende vragen

Als u eenmaal heeft besloten uw nieuwste app voor meer dan één platform te ontwerpen, vindt u nog meer beslissingen die moeten worden genomen voordat u zelfs uw eerste regel code kunt schrijven. Beslissingen zoals:

Behoud je twee verschillende en volledig onafhankelijke apps, of ontwerp je een hybride app met één codebasis?

Als u aan dezelfde app of service werkt voor meer dan één platform, hoeft dat niet per se de app opnieuw uit te vinden. Hergebruik van componenten en onderdelen van uw ontwerp waar mogelijk zal uw werklast verminderen en uw merk herkenbaar houden.

Hoeveel van uw app moet u consolideren?

Deze is lastiger en hangt erg van je eisen af. Als het gaat om UI-ontwerp en grafische elementen, is er veel dat u kunt hergebruiken met slechts kleine wijzigingen om uw idee bij de twee populairste platforms te laten passen.

Cross-platform frameworks maken het recyclen van uw inspanningen een stuk eenvoudiger. Maar er zijn duidelijke voor- en nadelen aan het ontwikkelen met een hybride framework in tegenstelling tot het gebruik van de native platform-SDK. Er zijn ook zoveel cross-platform frameworks als tegenwoordig platforms. Verderop in dit artikel zullen we enkele van de meer prominente kaders bekijken die beschikbaar zijn en aan het eind van dit artikel zullen de voor- en nadelen van het ontwikkelen van een platformoverschrijdend raamwerk worden besproken..

Hoe zit het met de gebruikersinterface en maatwerk?

Dit is een van de grootste punten in mobiele ontwikkeling. U kunt het beste idee hebben en een aantal geweldige code gebruiken, maar als het niet aantrekkelijk en gemakkelijk te navigeren is, gaan gebruikers ergens anders kijken. Het gebruik van een platformonafhankelijke SDK kan een dramatische impact hebben op uw UI-ontwerp, waardoor u grote delen ervan kunt hergebruiken, maar mogelijk ook sommige van uw opties kunt beperken.

Moet elk platform een ​​andere esthetiek hebben?

Welnu, het antwoord is hier geen simpel "ja" of "nee". We zullen dit in de volgende sectie in detail bespreken.

UI-ontwerp

Games en entertainment-apps

Een volledig op maat gemaakte gebruikersinterface voor elk implementatieplatform is een heel gebruikelijk patroon bij het ontwerpen van spellen en dit werkt vrij goed.

Plants vs Zombies op Android

Plants vs Zombies op iOS

Waarom? Een deel van het spelen van een game is leren hoe de besturing en interface voor de game werken, inclusief hoe je door zijn gebruikersinterface navigeert. Eigenzinnig, leuk gedrag met een aangepaste, op maat gemaakte look en feel in de gebruikersinterface is praktisch essentieel om een ​​goede spelervaring te creëren.

Utility-apps

De tijd is een van de grootste ontwerpinvloeden die je gebruikersinterface zal hebben als je aan het ontwerpen bent voor een functionele app. Gebruikers willen van je voorpagina naar de missie gaan, in zo min mogelijk tikken. Een interface hebben met bekende aanwijzingen, die gebruikers zullen herkennen en onthouden van het gebruik in andere toepassingen op het platform, zal uw app vriendelijker en meer gestroomlijnd maken voor nieuwe gebruikers. Maar dat betekent niet noodzakelijkerwijs dat de deur volledig is gesloten voor maatwerk.

Of u nu kiest voor de native API of een cross-platform API, er is veel dat u kunt doen met uw UI-ontwerp om het echt opvallend te maken zonder het vertrouwen van uw gebruikers te schaden of ze te ver weg te duwen uit hun comfortzone.

En de waarheid is, als u ervoor kiest om te ontwerpen en ontwikkelen met cross-platform frameworks, betekent dit dat u weinig andere keus hebt dan om een ​​aangepaste gebruikersinterface te maken. Afhankelijk van het framework dat u hebt geselecteerd, heeft u mogelijk wel of geen toegang tot native UI-elementen. Maar zelfs als u geen native besturingselementen gebruikt, of als u slechts de grenzen van de native API verlegt, kunt u nog steeds ontwerppatronen volgen die ervoor zorgen dat gebruikers zich thuis voelen in uw app.

Het draait allemaal om balans. Bekijk enkele van de grote namen en wat ze doen met hun apps. Neem de Facebook app bijvoorbeeld: het geeft een goed evenwicht tussen het naleven van platform-UX-overwegingen en de merkherkenning.

De Facebook-app op Android

De Facebook-app op iOS

Meteen is het herkenbaar als een Facebook-app, ongeacht op welk platform u zich bevindt. Maar het bevat ook die vertrouwd elementen en patronen waar gebruikers gewend aan zijn, waardoor het voor een iPhone-bezitter net zo gemakkelijk is om in te stappen en op gang te komen als voor een Galaxy-bezitter.

De Tweetdeck-app is een nog beter voorbeeld.

De TweetDeck-app op Android

De TweetDeck-app op iOS

Ironisch genoeg is de officiële Twitter-app naar mijn mening een redelijk goed voorbeeld van cross-platformontwerp dat verkeerd is gegaan.

De Twitter-app op Android

De Twitter-app op iOS

De truc hier is alles in de werkbalken en navigatiebesturingselementen. Die balken aan de boven- en onderkant van het scherm, de actiebalk, de navigatiebalk en vergelijkbare ontwerppatronen moeten consistent blijven met de standaard van het platform. Je kunt de kleur en stijl een beetje tweaken, maar de functionaliteit en het algehele uiterlijk moeten onmiddellijk herkenbaar zijn. Uw inhoud kan echter een veel uniekere look-and-feel krijgen, dus u blijft zitten met een redelijk consistent ontwerp op verschillende platforms. Hoe ver kun je het nemen? Nou, kijk eens naar sites als TappGala en zie waar anderen mee wegkomen.

Wat is het verschil?

Houd bij het ontwerpen rekening met de subtiele en niet zo subtiele verschillen tussen platforms. Een van de grootste is de fysieke interface, de feitelijke hardwareknoppen op het apparaat. De iPhone heeft maar één knop die voor de rest afhankelijk is van de soft buttons in de gebruikersinterface. Android-apparaten hebben aan de andere kant drie standaardknoppen. Het menu, de knop Terug en de startknop. Android-gebruikers zullen in de war raken als het tikken op deze geen resultaat oplevert in uw platformonafhankelijke app. Android biedt ook een contextmenu, toegankelijk via de menuknop, waarmee u nog meer geavanceerde bedieningselementen kunt gebruiken. Je zult aanpassingen moeten maken in je iOS-ontwerp voor deze ontbrekende knoppen en menu's met zachte opties.

Platformoverkoepelende frameworks

Als u ontwerpt en ontwikkelt voor meerdere apparaatplatforms, kunt u meer recycleren dan alleen uw ontwerpelementen. Afhankelijk van uw vereisten, zijn er een aantal platformonafhankelijke frameworks die u kunnen helpen bij het consolideren van uw codebase.

PhoneGap

  • Website: http://www.phonegap.com/
  • Language (s): Javascript, HTML, CSS
  • platforms: iOS, Android, BlackBerry OS, webOS, Windows Phone 7, Symbian, Bada
  • Licentie: Open-source (MIT-licentie)
  • Ondersteuning: Ondersteuningspakketten beschikbaar
  • Snelle links: Download PhoneGap, installatie-instructies, uitbreiding van de PhoneGap-instructies, plug-ins

Als u een frontend webontwikkelaar bent, voelt u zich meteen thuis met PhoneGap. Met behulp van uw bestaande kennis van HTML, CSS en JavaScript kunt u snel apps ontwikkelen. PhoneGap is in wezen WebKit met een aangepaste JavaScript-API die de native API omhult. Het is ook een geweldige optie om uw bestaande webapps te porten en ze te promoten voor volwaardige mobiele applicaties. U kunt elk van uw favoriete client-side webtools gebruiken, inclusief JavaScript-frameworks zoals jQuery Mobile of SenchaTouch.

Helaas, omdat uw app zonder een WebKit-browserexemplaar werkt, zullen de prestaties niet zo vers zijn als de oorspronkelijke apps of zelfs wat wordt geboden door andere beschikbare frameworks. Je hebt ook geen toegang tot native UI-besturingselementen (hoewel je je eigen thema's kunt stijlen om vergelijkbaar te zijn met CSS). PhoneGap biedt een geweldige gehoste build-service, waarmee u apps lokaal kunt ontwikkelen en vervolgens kunt uploaden en samenstellen met hun online service. Dit is geweldig als u geen Mac hebt voor native iOS-ontwikkeling en -testen. Voordat je besluit om PhoneGap te gebruiken, moet je controleren of het alle functies ondersteunt die je nodig hebt voor je doelplatforms. Gelukkig is het PhoneGap-project open-source en volledig uitbreidbaar, zodat je altijd zelf ontbrekende functies kunt toevoegen als het nodig is om dit te doen.

PhoneGap Showcase:

Harmonische schets-app
Trekharmonica
Orbium

Bekijk de officiële demosite voor meer voorbeelden van apps die zijn gebouwd met PhoneGap.

RhoMobile

  • Website: http://rhomobile.com/
  • Language (s): Ruby, HTML, CSS, JavaScript
  • platforms: iOS, Android, BlackBerry OS, Windows Phone 7
  • Licentie: Open-source (MIT-licentie)
  • Ondersteuning: Er is een eigen bedrijfsondersteuningslicentie beschikbaar
  • Snelle links: RhoStudio eenvoudig te installeren, Ruby Gem installeren, Rhodes uitbreiden.

Rails-ontwikkelaars zullen deze geweldig vinden! Met RhoMobile kun je je apps in Ruby ontwikkelen met een sterke MVC-aanpak! De weergaven zijn ontworpen met HTML, CSS en Javascript, dus u kunt al uw web-dev-vaardigheden meenemen. Nogmaals, dit framework heeft geen standaardondersteuning voor native controls, maar er zijn extensies beschikbaar waarmee je ze kunt benaderen.

Rhodes heeft ook een geweldige gehoste buildservice, RhoHub, en enkele interessante zakelijke en industriële functies zoals Rhosync en NFC-ondersteuning. Er is een duidelijke nadruk op RhoMobile als een oplossing voor zakelijke apps. Het framework is ook uitbreidbaar, dus je kunt je eigen native libraries en Ruby-edelstenen toevoegen. De prestaties zijn redelijk goed, want uw app wordt vooraf gecompompeerd naar bytecode.

RhoMobile Showcase:

Trolley mobiel
2Know
OECU Mobile

Bekijk de officiële demosite voor meer voorbeelden van apps die zijn gebouwd met RhoMobile.

Appcelerator's Titanium Mobile

  • Website: http://www.appcelerator.com/
  • Language (s): JavaScript, JSS
  • platforms: iOS, Android
  • Licentie: Open-source (Apache v2 Community-editie)
  • Betaalde opties: Indie ($ 49 / maand), Pro ($ 199 / maand / ontwikkelaar), Enterprise
  • Snelle links: Koop, download, installatie-instructies, uitbreiding Titanium, module marktplaats

Titanium Mobile is een ander raamwerk dat geschikt is voor webontwikkelaars die naar de mobiele ruimte gaan. Titanium nam aanvankelijk een vergelijkbare benadering als PhoneGap, en bood een webweergave die native API's omwikkelde. Maar sinds v1.0 is Titanium een ​​volledig JavaScript-gebaseerde cross-compiler, met toegang tot apparaat-native UI-elementen en een enorme prestatieverbetering.

Versie 1.5 introduceerde ook JSS, Javascript Stylsheets, gemodelleerd naar CSS, en biedt een flexibel opmaaksysteem dat kan worden gebruikt om uw weergaven aan te passen aan verschillende apparaten. Aparte naamruimten zijn ook beschikbaar voor platformspecifieke ondersteuning. Je kunt elke IDE gebruiken die je leuk vindt om je code te ontwikkelen, en Titanium Developer wordt gebruikt om je app voor te bereiden en te verpakken (hoewel debuggen lastig kan zijn).

showcase:

Titanium App Reel
GetGlue
Wunderlist

Bekijk de officiële demosite voor meer voorbeelden van apps die zijn gebouwd met Titanium Mobile.

Ansca's Corona SDK

  • Website: http://anscamobile.com/corona/
  • Language (s): Lua
  • platforms: iOS, Android
  • Licentie: Proefperiode, $ 199 / jaar enkelvoudig platform, $ 349 / jaar multi-platform
  • Snelle links: Koop / download, installatie-instructies voor Mac OSX, voor Windows, hulpprogramma's van derden

Ansca is opgericht door voormalige Flash- en Adobe-technici en hun ervaring is te zien in de Corona SDK-implementatie. Corona heeft een goed afgeronde API met een duidelijke nadruk op snelle, hoogwaardige 2D-game-ontwikkeling. De API bevat veel opties om de ontwikkeling van games te versnellen, zoals Box2D-physics, OpenGL + OpenAL-ondersteuning, animatiefuncties en sprite- en scènebeheer. Corona bevat zelfs enkele eenvoudige migratiehulpmiddelen voor Flash-apps en ActionScript-ontwikkelaars

Iedereen met een geschiedenis van gamemodding of Flash-ontwikkeling zal zich zeer op zijn gemak voelen met de Lua-scripttaal en Corona-toolset. Ansca biedt ook een online omgeving met een plek om uw app te promoten, codebronnen te delen en add-ons van derden te downloaden. Het gaat niet alleen om games, Corona biedt ook een bibliotheek met UI-widgets en enkele native elementen voor gebruikers van app-apps. Dit alles is zeer aantrekkelijk, maar het komt met een prijs: $ 199 / jaar voor ontwikkelaars die zich richten op een enkel platform (iOS of Android) en $ 349 / jaar voor zowel iOS- als Android-ondersteuning.

showcase:

ChocoRun
Magic Defenders
Blast Monkeys

Bekijk de officiële demosite voor meer voorbeelden van apps die zijn gemaakt met de Corona SDK.

Unity3D

  • Website: http://unity3d.com/
  • Language (s): IDE met Javascript / C # / Boo Scripting op Mono
  • platforms: Web, iOS, Android, Standalone, Wii, PS3, Xbox360
  • Licentie: Gratis en een Pro-versie vanaf $ 1.500 USD. Controleer de licentie vergelijking en prijs details.

Unity is in wezen een scriptbare game-engine met een eigen, krachtige IDE. De droom van een game-ontwikkelaar, die is afgestemd op hoogwaardige gamevorming op een groot aantal platforms, waaronder consoles en het internet. Het is echter zeker alleen bedoeld voor 3D-game-ontwikkeling, dus gebruikers van app-apps moeten ergens anders kijken. Hoewel ze wel een gratis versie van het framework bieden, om echt te kunnen genieten van de volledige voordelen van Unity, moet je een eerlijke som geld investeren, met een pro-licentie voor $ 1.500 USD plus extra kosten voor add-ons.

showcase:

Unity Spring 2010 Highlight Reel
Shadowgun
Max en de magische markering
/>

Bekijk de officiële demosite voor meer voorbeelden van apps die met de Unity3D zijn gebouwd.

Voor- en nadelen van verschillende platforms

Hieronder volgt een lijst met voor- en nadelen die zijn gekoppeld aan het gebruik van een SDK van derden om platformonafhankelijke toepassingen te ontwikkelen.

Cons

  • SDK Lock In:

    Als u zich eenmaal aan een kader hebt verbonden, worden uw projecten afhankelijk van een derde partij. U wilt een stabiel raamwerk kiezen met een toegewijde ontwikkelaar (bij voorkeur ontwikkelaars) en een grote community. Open source frameworks bieden hier enige veiligheid. Omdat u toegang heeft tot de bron en de ontwikkelaar in de toekomst de SDK verlaat, kunnen u of anderen doorgaan met de ontwikkeling ervan.

  • API "Versheid":

    Het duurt even voordat wijzigingen in platform-API door de verschillende SDK's van derden zijn gegaan. Het kan een tijdje duren voordat de nieuwste en beste functies beschikbaar zijn, als ze überhaupt beschikbaar zijn. Nogmaals, u vertrouwt op de inzet van de SDK-ontwikkelaar voor het project.

  • Beperkte controle:

    Platformonafhankelijke SDK's zijn een abstractie van de verschillende platforms naar één uniforme interface die theoretisch de ontwikkeling gemakkelijker moet maken. Maar tegelijkertijd maakt deze abstractie je toegang tot de onderliggende API overbodig en kan je functieset daardoor beperkter zijn. Met de officiële, native API wordt u alleen beperkt door de hardware en incidentele ontwerpbeslissingen van Google of Apple. Een gerelateerd punt: zware taken zoals 3D-rendering en video / audio-verwerking kunnen met name beperkt zijn in de aanpak die u kunt volgen, als ze al mogelijk zijn.

Voors:

  • Geconsolideerde inspanning:

    Het meest voor de hand liggende voordeel van het kiezen van een platformonafhankelijke SDK is het verminderen van uw totale inspanning voor een bepaald project. Door een enkele API te targeten, bespaart u veel op de ontwikkeling en het onderhoud van de codebasis.

  • plugins:

    Dit gaat terug op de nadelen van API-versheid en beperkte controle. Veel frameworks bevatten een aantal uitbreidings- of plugin-architectuur waarmee u een native library kunt bouwen en deze in de SDK kunt integreren. Dit geeft u echt het beste van twee werelden, u kunt ontbrekende of geavanceerde functies ontwikkelen met de oorspronkelijke hulpprogramma's en vervolgens de platformonafhankelijke SDK gebruiken voor algemene taken.

  • Bekende talen:

    Als u een platformonafhankelijke SDK selecteert die overeenkomt met uw huidige vaardigheden, vermindert uw leercurve. In grotere teams met één tool voor de taak, kan dit ook betekenen dat er minder ontwerptijd, trainingstijd en minder ontwikkelaars nodig zijn om het project te implementeren..

  • Verlaagde ontwikkelingstijd:

    De meeste platformonafhankelijke frameworks bieden niet alleen één tool voor veel taken, maar vereenvoudigen ook de ontwikkeling met dynamische talen en uitgebreide bibliotheken voor veelvoorkomende, repetitieve taken.

  • Code en Asset Sharing:

    Om het leven nog gemakkelijker te maken, beschikken verschillende belangrijke frameworks over officiële repositories voor het delen van code en assets of het kopen van code van andere ontwikkelaars.

Afronden

Overweeg alleen een platformonafhankelijke framework als het past bij zowel uw vereisten als uw vaardigheden. Doe wat zorgvuldig onderzoek en zorg ervoor dat de ontwikkelingshulpprogramma van keuze alle functionaliteit ondersteunt die u in uw app wilt opnemen. Er is niets erger dan halverwege de ontwikkeling voordat u zich realiseert dat een belangrijke functionele vereiste niet wordt ondersteund door de SDK die u gebruikt. Houd er wel rekening mee dat veel van de frameworks extensies ondersteunen, waardoor u native modules kunt toevoegen om lacunes in te vullen die door de kern SDK-ontwikkelaars zijn achtergelaten. Uiteindelijk zou een platformonafhankelijk raamwerk uw werklast moeten verminderen, en geen hoop meer problemen op uw reeds drukke schema!