Go Back   AnandTech Forums > Software > Programming

Forums
· Hardware and Technology
· CPUs and Overclocking
· Motherboards
· Video Cards and Graphics
· Memory and Storage
· Power Supplies
· Cases & Cooling
· SFF, Notebooks, Pre-Built/Barebones PCs
· Networking
· Peripherals
· General Hardware
· Highly Technical
· Computer Help
· Home Theater PCs
· Consumer Electronics
· Digital and Video Cameras
· Mobile Devices & Gadgets
· Audio/Video & Home Theater
· Software
· Software for Windows
· All Things Apple
· *nix Software
· Operating Systems
· Programming
· PC Gaming
· Console Gaming
· Distributed Computing
· Security
· Social
· Off Topic
· Politics and News
· Discussion Club
· Love and Relationships
· The Garage
· Health and Fitness
· Merchandise and Shopping
· For Sale/Trade
· Hot Deals with Free Stuff/Contests
· Black Friday 2013
· Forum Issues
· Technical Forum Issues
· Personal Forum Issues
· Suggestion Box
· Moderator Resources
· Moderator Discussions
   

Reply
 
Thread Tools
Old 02-22-2013, 08:29 PM   #1
Blackjack200
Diamond Member
 
Blackjack200's Avatar
 
Join Date: May 2007
Location: Philadelphia
Posts: 9,331
Default Would like to write an ios app for my sailing club, is this doable?

So, I sail with a club in Philadelphia and I'd like to develop an IOS app that will provide timely information to skippers and crew. Specifically I'd like to provide tide data (sourced from NOAA and available in text tables), and weather forecasts for the racing area (I believe I can pull this via FTP from the National Weather Service).

So this is how I imagine it working - the tide table is static and sits on a server (I'll host the server for development, when it goes live I'll probably have it hosted somewhere). The server pushes out an update to the IOS app every 6 hours with tide info for the next 24 hours. The server also pulls the weather forecast from NWS at whatever interval NWS updates its file, and pushes it out to the app.

That would be pretty much it to start with. Maybe later on other stuff could be added like reminders for club events etc.

I have limited coding experience but when I've done it I've generally picked it up pretty quickly. I'd be looking at this as a learning experience. Is this a good idea? Or am I just asking for a bunch of headaches and frustration?

My rough plan of attack is:

- Find the appropriate tide table - DONE. Tide Table is here: http://tidesandcurrents.noaa.gov/get...=248&footnote=

- Figure out how the NWS FTP pulls will work - Here's my starting point: http://www.nws.noaa.gov/tg/dataprod.php

- Learn IOS development and rough code app - Hit the library/bookstore and grab a book on Xcode??

- Test on home server - Really have no idea what's appropriate here. I imagine it will become clear as I learn the coding?

- Get it hosted

- Get it approved by Apple and into the app store (how hard is this?)
Blackjack200 is offline   Reply With Quote
Old 02-22-2013, 08:44 PM   #2
Leros
Lifer
 
Leros's Avatar
 
Join Date: Jul 2004
Location: Austin, TX
Posts: 21,369
Default

Everything you want sounds doable to me (I think iPhone apps can periodically wake up and pull data). The basically idea is simple but covers a lot of different technologies that you'll have to learn individually.
Leros is offline   Reply With Quote
Old 02-23-2013, 12:54 AM   #3
black0ut
Member
 
Join Date: Feb 2013
Posts: 26
Default

Sounds completely possible.

1) If you've never done ios, you'll need to learn objc. To me it's just a more verbose c++ with slots/signals (dynamic binding) and decorators instead of RAII.

2) you'll need to learn xcode. i personally dislike using the layout builder in xcode because it creates xml which is impossible to merge in version control. i do all my gui programmatically.

3) As far as I know, you can't push content in ios other than popup notifications, or an application icon wiggle. That means that your app is actually pulling content off your server. That makes your server side trivial, just have some json endpoint that is updated with data every x hours.

4) Pretty straightforward until it's not. think of it like airport customs.
black0ut is offline   Reply With Quote
Old 02-23-2013, 02:22 AM   #4
slugg
Diamond Member
 
slugg's Avatar
 
Join Date: Feb 2002
Location: Tampa, FL
Posts: 4,012
Default

OP,

If I'm understanding what you want to do, your app doesn't need any kind of "push" data. Set up your web service to provide a datetime of last change. When the app loads or is refreshing its view of whatever information, poll the server for the last change. If the result is newer than the local cache, then download the new data. Else, just leave it. I don't see where "push" is necessary.

That being said, when you want to do sounds like it would be much more appropriate as a web app. You can make it look and feel pretty sweet with JQTouch UI. You don't have to worry about paying for a developer subscription, waiting for Apple to approve updates, or even getting rejected. Dealing with Apple really sucks, so if you can cut them out of the loop, that's always an advantage.
__________________
  • ThinkPad T520 - srs bizniz
  • MacBook Air 11'' - iOS dev bizniz
  • 1999 Mazda Miata - (street legal gokart on steroids!)
  • 2002 Mazda Protege - (Work in progress)
slugg is offline   Reply With Quote
Old 02-23-2013, 06:40 AM   #5
Blackjack200
Diamond Member
 
Blackjack200's Avatar
 
Join Date: May 2007
Location: Philadelphia
Posts: 9,331
Default

Thanks for all the input. I hadn't thought of doing a web app, I'll definitely have to consider it. I spent a few hours going through the NWS website last night and checking out their FTP feeds. There's so much information to sort through.
Blackjack200 is offline   Reply With Quote
Old 02-23-2013, 11:14 AM   #6
slugg
Diamond Member
 
slugg's Avatar
 
Join Date: Feb 2002
Location: Tampa, FL
Posts: 4,012
Default

Why FTP? Why not HTTP? If the latter, it would be nearly trivial.
__________________
  • ThinkPad T520 - srs bizniz
  • MacBook Air 11'' - iOS dev bizniz
  • 1999 Mazda Miata - (street legal gokart on steroids!)
  • 2002 Mazda Protege - (Work in progress)
slugg is offline   Reply With Quote
Old 02-23-2013, 01:12 PM   #7
Leros
Lifer
 
Leros's Avatar
 
Join Date: Jul 2004
Location: Austin, TX
Posts: 21,369
Default

I think it makes sense to have an app sync up periodically. When you're out sailing, you might not have internet access so it has to be locally cached.
Leros is offline   Reply With Quote
Old 02-23-2013, 01:25 PM   #8
slugg
Diamond Member
 
slugg's Avatar
 
Join Date: Feb 2002
Location: Tampa, FL
Posts: 4,012
Default

Quote:
Originally Posted by Leros View Post
I think it makes sense to have an app sync up periodically. When you're out sailing, you might not have internet access so it has to be locally cached.
Good point. But keep in mind that the only things iOS apps can do in the background is scheduled notifications, play audio, and VOiP. So unless the OP's app is running in the foreground, it will not sync/update.

edit: OP, it seems like you're just going to have to pick the lesser of evils here. Or maybe you can come up with something more sophisticated
__________________
  • ThinkPad T520 - srs bizniz
  • MacBook Air 11'' - iOS dev bizniz
  • 1999 Mazda Miata - (street legal gokart on steroids!)
  • 2002 Mazda Protege - (Work in progress)
slugg is offline   Reply With Quote
Old 02-23-2013, 01:27 PM   #9
Leros
Lifer
 
Leros's Avatar
 
Join Date: Jul 2004
Location: Austin, TX
Posts: 21,369
Default

Quote:
Originally Posted by slugg View Post
Good point. But keep in mind that the only things iOS apps can do in the background is scheduled notifications, play audio, and VOiP. So unless the OP's app is running in the foreground, it will not sync/update.

edit: OP, it seems like you're just going to have to pick the lesser of evils here. Or maybe you can come up with something more sophisticated
I'm not sure that's true. I have a package tracking application that checks in with UPS/FedEx/etc and provides me with notifications as the status changes. It seems like it constantly runs since I get updates for several days after putting in the tracking number without having to open the application again.
Leros is offline   Reply With Quote
Old 02-23-2013, 02:46 PM   #10
slugg
Diamond Member
 
slugg's Avatar
 
Join Date: Feb 2002
Location: Tampa, FL
Posts: 4,012
Default

Quote:
Originally Posted by Leros View Post
I'm not sure that's true. I have a package tracking application that checks in with UPS/FedEx/etc and provides me with notifications as the status changes. It seems like it constantly runs since I get updates for several days after putting in the tracking number without having to open the application again.
Perception is reality. The phone itself is receiving push notifications (popups, sounds, text, etc), not the app. Then, when you open the app to check the notification, that's when the code runs to "sync" it. If you receive the notification, dismiss it, turn on airplane mode, then run the app, I'm willing to bet you won't see the new details. I hope I'm wrong, because then that means Apple is starting to lighten up!
__________________
  • ThinkPad T520 - srs bizniz
  • MacBook Air 11'' - iOS dev bizniz
  • 1999 Mazda Miata - (street legal gokart on steroids!)
  • 2002 Mazda Protege - (Work in progress)
slugg is offline   Reply With Quote
Old 02-23-2013, 03:05 PM   #11
Blackjack200
Diamond Member
 
Blackjack200's Avatar
 
Join Date: May 2007
Location: Philadelphia
Posts: 9,331
Default

Wow, I obviously have a lot to learn about iOS.

As for the question about FTP, I just assumed that's how server side data pulls were done. I'll look into the HTTP option.
Blackjack200 is offline   Reply With Quote
Old 02-23-2013, 06:27 PM   #12
black0ut
Member
 
Join Date: Feb 2013
Posts: 26
Default

Quote:
Originally Posted by slugg View Post
OP,

If I'm understanding what you want to do, your app doesn't need any kind of "push" data. Set up your web service to provide a datetime of last change. When the app loads or is refreshing its view of whatever information, poll the server for the last change. If the result is newer than the local cache, then download the new data. Else, just leave it. I don't see where "push" is necessary.

That being said, when you want to do sounds like it would be much more appropriate as a web app. You can make it look and feel pretty sweet with JQTouch UI. You don't have to worry about paying for a developer subscription, waiting for Apple to approve updates, or even getting rejected. Dealing with Apple really sucks, so if you can cut them out of the loop, that's always an advantage.
Actually, now that you mention this, a WebView might be a way easier way of doing this. Especially for a newbie dev.
black0ut is offline   Reply With Quote
Old 02-23-2013, 07:40 PM   #13
Leros
Lifer
 
Leros's Avatar
 
Join Date: Jul 2004
Location: Austin, TX
Posts: 21,369
Default

Quote:
Originally Posted by slugg View Post
Perception is reality. The phone itself is receiving push notifications (popups, sounds, text, etc), not the app. Then, when you open the app to check the notification, that's when the code runs to "sync" it. If you receive the notification, dismiss it, turn on airplane mode, then run the app, I'm willing to bet you won't see the new details. I hope I'm wrong, because then that means Apple is starting to lighten up!
Hmm, you're probably right.

Since that's the case, I feel like the app should still keep a local cache of the data instead of just being a webview. If I'm on a boat where I don't have internet connection, it would be nice to have access to that data. Maybe I have to launch the app before leaving so I can download the latest data, but that's ok.
Leros is offline   Reply With Quote
Old 02-23-2013, 08:48 PM   #14
slugg
Diamond Member
 
slugg's Avatar
 
Join Date: Feb 2002
Location: Tampa, FL
Posts: 4,012
Default

Quote:
Originally Posted by Leros View Post
Hmm, you're probably right.

Since that's the case, I feel like the app should still keep a local cache of the data instead of just being a webview. If I'm on a boat where I don't have internet connection, it would be nice to have access to that data. Maybe I have to launch the app before leaving so I can download the latest data, but that's ok.
This.
__________________
  • ThinkPad T520 - srs bizniz
  • MacBook Air 11'' - iOS dev bizniz
  • 1999 Mazda Miata - (street legal gokart on steroids!)
  • 2002 Mazda Protege - (Work in progress)
slugg is offline   Reply With Quote
Old 02-23-2013, 10:54 PM   #15
slpaulson
Diamond Member
 
slpaulson's Avatar
 
Join Date: Jun 2000
Posts: 4,374
Default

Quote:
Originally Posted by slugg View Post
Perception is reality. The phone itself is receiving push notifications (popups, sounds, text, etc), not the app. Then, when you open the app to check the notification, that's when the code runs to "sync" it. If you receive the notification, dismiss it, turn on airplane mode, then run the app, I'm willing to bet you won't see the new details. I hope I'm wrong, because then that means Apple is starting to lighten up!
Unfortunately you are correct. There's not a whole lot an iOS app can do when it's in the background.

If you have experience with the service side of things, I think you would probably probably want to write a service that you host, that would bring in whatever information that it is you want from the original sources, and serve it up to your iOS app in whatever format you want. I suggest having your web service bring together all the sources, instead of doing it in the app, because it would be a lot easier to update your service vs the app anytime the one of the sources you're using changes formats etc.

Your service could also send a push notification to your app if there's something urgent, such as a warning.
slpaulson is offline   Reply With Quote
Old 02-25-2013, 12:50 PM   #16
mosco
Senior Member
 
Join Date: Sep 2002
Posts: 925
Default

If you want to write a native app, this is a pretty simple app. If you want to use push notifications, and you are willing to pay, you can use something like Urban Airship if you don't want to roll your own.

In terms of writing a web app, you could easily write one that also used HTML5 local storage to provide offline caching and such. You would however lose out on push notifications.

You could also use something like PhoneGap to make HTML 5 "native app" but I would vote just a native app. You can use webviews on both platforms if you want to re-use some code across them.
mosco is offline   Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 01:16 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.