Updated version of my PHP in a mobile ecosystem talk. Looks at how PHP plays a role in the mobile world, and explains what php developers need to know about mobile development.
Presentation delivered at the PHPBenelux 2011 conference and the PHP UK conference 2011.
19. Device Detection
It’s all in the User Agent
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac
OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko)
Version / 4.0.5 Mobile/8B117 Safari/6531.22.7
Mozilla/5.0 (Linux; U; Android 2.1-update1; nl-nl; HTC
Hero Build/ERE27) AppleWebKit/ 530.17 (KHTML, like
Gecko) Version/4.0 Mobile Safari/ 530.17
22. Device Detection
http://www.deviceatlas.com
Database of device properties
Available online, as API and
downloadable json file
Free for development
~99$/year for production
http://wurfl.sourceforge.net/
24. Zend Framework Example
Take advantage of ZF’s powerful MVC set up
View scripts determine layout of actions
Layout script wraps everything into main layout
Use Bootstrapper to detect device and setup MVC
37. jQTouch
iPhone experience in HTML5
http://jqtouch.com/
jQuery based
MIT License
Give it a try: http://jqtouch.com/preview/demos/main
38. Alternatives
jQuery Mobile
1.0 alpha was released at October 16, 2010
http://jquerymobile.com/
Sencha Touch
From the makers of jqTouch
Tablet support
http://www.sencha.com/products/touch/
39. You already know PHP
Your PHP skills + HTML5 = easy mobile websites
41. PHP’s role in native apps
iPhone Android Blackberry
App App App
API
42. Optimize APIs for mobile
Content optimization
Scalability
Longevity
Security
Client/Server considerations
43. Content Optimization
Consider CPU and memory constraints
Prefer JSON over XML
Compress data
Keep responses small
But not too small (connection / routing overhead)
45. Longevity
Apps have different deployment patterns
No ‘quick fix’ in the application as in web apps
Client/Server asynchronous updates
Backwards compatibility
Versioned API URLs:
http://iportfolio.api.egeniq.com/portfolios/1.0/mvb/collections.json
46. Longevity
How long do you support your APIs?
Can’t force people to delete their Apps
Provide clean fallback
Synchronized instead of real-time data
Implement status check API calls
47. API Security
TLS/SSL
Basic Auth
OAuth? XAuth!
PKI / TLSAuth
Signed URLs:
?x=1&y=2
&signature=hash(secret, time limit, params)
48. Client/Server considerations
Image Processing in the API, instead of App
Use Imagick / GD etc.
Trade-off between bandwidth and processing power
Apps support threading / asynchronisity
Fire-and-forget API design
Prepare/getResult call duos
Push features into PHP APIs for reuse
49. PHP’s role in native apps
PHP has native support for:
Web services
JSON
Compression
Image manipulation
Egeniq’s number 1 choice for App APIs
25-30% of App development time = API
51. HTML5 in the App Store
HTML5 on the server, supports PHP:
IPFaces - http://www.ipfaces.org/
HTML5 on the device, no (or limited) support for PHP:
AppCelerator - http://appcelerator.com/
Phonegap - http://phonegap.com
54. Running PHP on the device
First: Why??!
PHP For Android (PFA)
http://phpforandroid.net/
PAMP for Symbian
http://wiki.opensource.nokia.com/projects/PAMP
59. Credits
Pictures used in this presentation are creative commons attribution licensed pictures.
Here are the owners and the URLS where the originals can be found:
‘Dow says POO’ by Stepleton - http://www.flickr.com/photos/29407923@N03/2899705638/
‘The telephone’ by Tylerdurden - http://www.flickr.com/photos/tylerdurden/529028040/
‘Web’ by Kurtxio - http://www.flickr.com/photos/kurtxio/2182760200/
‘Heavy cloud, no rain’ by Robynsnest - http://www.flickr.com/photos/robynsnest/12405841/
‘Wireless fridge’ from http://www.wirelessgoodness.com/tag/srt746awtn/
‘Army iphone app’ by Soldiersmediacenter - http://www.flickr.com/photos/soldiersmediacenter/4271795260/
‘Carbon Fibre Wallet’ by Ryan Loos - http://www.flickr.com/photos/rh1n0/4157547404/
‘Keys’ by Jamison Judd - http://www.flickr.com/photos/jamisonjudd/2419601050/
‘Phone Girl’ by Steffen - http://www.flickr.com/photos/re-ality/460465894/
‘Icon_safari_hires’ by Hans Dorsch - http://www.flickr.com/photos/hansdorsch/2861804087/
‘Thinking’ by Karola - http://www.flickr.com/photos/karola/3623768629/
‘Jus'a web’ by Jusfi - http://www.flickr.com/photos/jusfi/2921202536/
‘iPad :)’ by Korosirego - http://www.flickr.com/photos/korosirego/4334862666/
‘I've got a monkey on my back’ by Keven Law - http://www.flickr.com/photos/kevenlaw/2698946160/
‘Add a spoonful of coffee’ by Martyn Wright - http://www.flickr.com/photos/35521221@N05/5181647830/
‘Locked steel’ by Darwinbell - http://www.flickr.com/photos/darwinbell/321434733/
‘4 Biscuits’ by Barnoid - http://www.flickr.com/photos/barnoid/2025811494/