+ All Categories
Home > Technology > Advanced iOS Engineering - The Junction Talk

Advanced iOS Engineering - The Junction Talk

Date post: 01-Nov-2014
Category:
Upload: onavo
View: 11 times
Download: 0 times
Share this document with a friend
Description:
Slides from a talk our iOS Product Manager, Nadav Wizman, gave at Advanced iOS Engineering event at The Junction (@thejunction32).Read the blog post: http://blog.onavo.com/?p=443
Popular Tags:
24
Does WebApp come Native to me? Nadav Wizman iOS Development Leader [email protected] The Junction Advanced iOS Engineering 28 July, 2011
Transcript
Page 1: Advanced iOS Engineering - The Junction Talk

Does WebApp come Native to me?

Nadav WizmaniOS Development Leader

[email protected]

The JunctionAdvanced iOS Engineering

28 July, 2011

Page 2: Advanced iOS Engineering - The Junction Talk

Agenda•Onavo•OnavoApp’s Evolution•The Challenge•Possibilities•The Spectrum•Conclusion •My Thoughts•Q & A

Page 3: Advanced iOS Engineering - The Junction Talk

So, who is Onavo?

Onavo puts smartphone and tablet users in control of their mobile data usage

Page 4: Advanced iOS Engineering - The Junction Talk

POC BETA

WebApp

Launch05/10 02/11 04/11

WebApp Container + Native

Page 5: Advanced iOS Engineering - The Junction Talk

• App launched 3 months ago.• Winner @ The Next Web Start-up Rally

OnavoApp’s evolution

Page 6: Advanced iOS Engineering - The Junction Talk

The ChallengeA GOOD product

Developer

Easy-to-make. Impressive. Familiar. Fast-to-make. As good as others. Pretty. Functional. Best. Worth money. Cross platform. Functional. Wide. Easy-to-update.....

Gorgeous. Really-pretty. Free. Easy-to-use. Valuable. Easy-to-install. Cheap. Cool. Recommended by Apple. Common. Unique. In The AppStore...

User

Page 7: Advanced iOS Engineering - The Junction Talk

The ChallengeCategories of “A GOOD product”

• UX• Native Abilities• Distribution• Dynamic• Cross Platform• Development

Page 8: Advanced iOS Engineering - The Junction Talk

The Possibilities WebApp

Container

Native

Page 9: Advanced iOS Engineering - The Junction Talk

UX “A GOOD product”

categories

Container

Native

Pretty goodStill, lacks in loading time and responsivenessWebAp

p

Amazing !Also.. the users expect nothing less.

Page 10: Advanced iOS Engineering - The Junction Talk

UX “A GOOD product”

categories

Container

Native

Pretty goodStill, lacks in loading time and responsivenessWebAp

p

Amazing !Also.. the users expect nothing less.

I highly recommend using advanced, well-established, amazing frameworks like Sencha Touch or Appcelerator’s Titanium Mobile

Page 11: Advanced iOS Engineering - The Junction Talk

Native Abilities “A GOOD product”

categories

Container

Native

Nope. none. nada. (some pseudo abilities, but not really)

WebApp

Fully.

Yes we can!

Page 12: Advanced iOS Engineering - The Junction Talk

Native Abilities “A GOOD product”

categories

Container

Native

Nope. none. nada. (some pseudo abilities, but not really)

WebApp

Fully.

Yes we can!

* Reminder: App Purchase / In-App Payments are also a Native Abilities

Page 13: Advanced iOS Engineering - The Junction Talk

“A GOOD product” categories

Container

Yes we can!

DistributionNope. none. nada. 1,000,000 WebApp users? i don’t see it

WebApp

Yes, it’s crowded, yes, it’s noisy, and you have to work hard to get noticed - but it’s still THE go-to place for users looking for new apps

* Must read Apple’s guidelines.

Native

Page 14: Advanced iOS Engineering - The Junction Talk

“A GOOD product” categories

Container

Yes we can!

DistributionNope. none. nada. 1,000,000 WebApp users? i don’t see it

WebApp

Yes, it’s crowded, yes, it’s noisy, and you have to work hard to get noticed - but it’s still THE go-to place for users looking for new apps

* Must read Apple’s guidelines.

Native

There are nice solution to manage iOS native beta distribution like TestFlight.

Page 15: Advanced iOS Engineering - The Junction Talk

Dynamic“A GOOD product”

categories

Container

Native

Change it. now bring it back. now put something new..

WebApp

Hardly.Apple’s approve is required on each-and-every update

Like a charm

Page 16: Advanced iOS Engineering - The Junction Talk

“A GOOD product” categories

Container

Native

WebApp Well. no.

(keep in mind, iOS is a range of devices

YES, with a bit more effort

Cross PlatformAs far as possible

Page 17: Advanced iOS Engineering - The Junction Talk

“A GOOD product” categories

Container

Native

WebApp Well. no.

(keep in mind, iOS is a range of devices

YES, with a bit more effort

Cross PlatformAs far as possible

Frameworks like Sencha, PhoneGap provide very impressive Cross-Platform.

appcelerator’s Titanium Mobile translates your web code into different, cross-platform native Apps

Page 18: Advanced iOS Engineering - The Junction Talk

“A GOOD product” categories

Container

Native

WebApp

Amazing development, design, debugging tools. VAST amount of developers.

A bit of both. major part is still developed as Web.

DevelopmentTools, Community & Support

Improving tools & frameworks, substantial developers community... until you get stuck

*stackoverflow.com is you friend

Page 19: Advanced iOS Engineering - The Junction Talk

In a nutshellWebAp

p• Offline!• CACHE-MANIFEST.• Local Storage/DB.• Graphics / effects.• Touch Events.• Rich Content.• Completely Cross-platform.

Page 20: Advanced iOS Engineering - The Junction Talk

In a nutshellOfflineWebAp

pCACHE MANIFEST

/main/home/main/app.js/settings/home/settings/app.jshttp://img.example.com/logo.pnghttp://img.example.com/check.pnghttp://img.example.com/cross.png

Cache

Storagevar db = openDatabase("Database_Name", "Database_Version"); database.executeSql("SELECT * FROM thejunction", function(result1) { database.executeSql("DROP TABLE thejunction", function(result2) { alert("My second database query finished executing!"); }); }); localStorage.setItem(‘userName’, ‘TheJunction’);

alert(“Hello “ + localStorage.userName);localStorage.removeItem(‘userName’);

Page 21: Advanced iOS Engineering - The Junction Talk

In a nutshellJS-Native communication

ContainerNative code can set

JS variables and call it’s functions

JS code can triggerNative code callback

(with params)

Page 22: Advanced iOS Engineering - The Junction Talk

ConclusionsLots of Questions to be asked.

Page 23: Advanced iOS Engineering - The Junction Talk

My ThoughtsBest practices

•Read the Guidelines

•In-App Analytics

•Know your competition

•Treat BETA and product differently

•iOS is not just iPhone 4

•Go Native

Page 24: Advanced iOS Engineering - The Junction Talk

Q & A

Nadav [email protected]@nadavwiz


Recommended