Applications that require a web server for full functionality - ios

Is it possible to deploy an iOS application that requires a Node.js socket to do something on a computer?
For example:
Application -> Node.js socket -> Doing something on a computer
Computer does his job -> Response from Node.js socket -> Processing data with application
I don't think that Apple allows this, but one of my friends is sure about it. My point is that this solution does not reflect to an easy usage instead of making it a little bit complicated for average users.

The answer is yes. I don't know how to integrate Node.js into app, but there are many other server that can be easily added to app, such as CocoaHTTPServer. I have created a project to manage files inside app sandbox. Open web page hosted by app to manage files. I know some other apps, which provide web page hosted by app to transfer media files.

Related

Can you run an AWS Lambda using Greengrass as part of your Mobile App?

We have an application that normally communicates with our AWS backend that triggers some Lambdas to process some cloud data and generate some result. This works great however, our application needs to be able to run in an offline mode. I know that AWS Greengrass can let you execute your Lambda code locally for an IoT device. What I want to know is, is it possible to leverage greengrass this way from a Mobile app? Specifically iOS but I would be curious if this would work for android as well. Is there anything that would prevent me from leveraging the AWS greengrass stuff from inside my mobile application?
Thank you!
Casually I worked quite a lot with both iOS and Greengrass but I’ve never heard about a GG daemon that could run on iOS. But even if there was one your app would most likely violate the App Store Review Guidelines, specifically the 2.5.2 point that prohibits downloading source code from external resources except in some special cases. So you wouldn’t be able to publish your app anyway.

Can I use OpenCV with a web app?

I want to control my app using hand gestures. For various reasons I have chosen to make a web based app.
Is it possible to control/interact with a web app with OpenCV (or any other program) running as an agent on the client, communicating directly with the page on the client rather than with the server?
The web app doesn't have to be in a common browser, it can be something like Qt WebKit. I am ok requiring the user to have an agent on their computer.
The server is not running locally!

Building iOS app, website, and backend

I've only recently started to delve into how building apps work. I'd like to know what the general setup is for a mobile app and a website, in which users can update information on the app through the website.
I'm trying to learn how to make an iOS app with Swift, and use Amazon Web Services as the backend for it. If I wanted to then make a website that would change data on the mobile app, would I have to create a website from scratch with Ruby or Python, and then somehow connect that to the same AWS backend that my iOS app uses?
Thanks.
Usually, most data is stored on a website. Your website can have ways of viewing the data, such as web apps, like jcaron said. An app is usually used for viewing data from the website. When I develop apps (with Swift) I setup a database on a website and connect it to the app using PHP scripts. Then I make the app, with it's own UI, which does HTTP requests to the website and uses the data.
That's a very broad question, with lots of possible answers, but here are some of the options:
you have a native (Objective-C or Swift) iOS app, with its own UI, etc. It exchanges data with your back-end server, which stores stuff in a database and/or forwards messages between clients. Then, you have a website, using any language/framework you want, accessing the same database.
you have a web-based application: you use exactly the same code (with responsive design of course), serve it from your servers using any language/framework you want, and just embed that in a web view in your app
you have an hybrid application: this is close to the previous option, but you do most of the coding client-side (i.e. using Javascript, possibly with frameworks such as Angular) within a Cordova/Phonegap app. The same app would then be deployable as a native app as well as served as a website. You would just have back-end code on the server.

Should I separate Web app from Web Server for multi platform?

My question is whether I should have a single server serving HTML and JSON or separate those two.
To be more specific these are the pieces of my two options:
1)
API server running Python in Google App Engine
Web app running Rails in Heroku
iOS app
Android app
The Web, iOS and Android apps would query the API server to retrieve information like list of entities to display in the app.
2)
Server running Rails in Heroku
iOS app
Android app
The Rails server would be a regular Rails app and would have API URLs to serve the iOS and Android when the necessary JSON with the list of entities.
Which approach should I take and why?
I would suggest separate servers for them. If one server crashes or has other issues then only one of your platforms will have an issue. Also, a server has a capacity before it "freaks out" if your server can only handle 1,000 people on it and each of your platforms have 500 people on it then your server is over capacity with only 500 people on 1 of the platforms.
You could keep it on one server especially if you don't have a lot of traffic. In my experience, I had a website turned into an app with one server. Not too many people were on the website but the app did which caused the website to also crash once the server hit capacity.
I hope this helps.

iOS: filesharing without iTunes?

I develop an enterprise application for iOS and the user should be able to add files from the desktop to the application.
I implemented this using filesharing, which works great.
Now this company wants to get rid of iTunes from their machines (which is quite understandable, iTunes is a very invasive process).
The question is, is it still possible to somehow use filesharing without iTunes? maybe with another application?
Or what other way is there to send files to the app (preferrably without the need of an internet connection)
//edit: must work on windows 7 and must not require to install iTunes (there are some other tools that allow access to the iPad filesystem, but they go through drivers installed by iTunes)
You could exchange data via the local wireless network (a connection to the internet is not required, just the iOS device and the Windows computer need to be on the same network).
One option:
You can then create a simple TCP/IP connection over sockets between an iOS app and a Windows application and exchange the data you want.
However you probably need to implement a suitable simple Windows application to do this.
An other, maybe simpler, solution:
You could start a webserver in your iOS-App and show it's IP on the screen. By entering this IP in a browser on the desktop computer you can access websites on the iOS device, which can make documents available for download or receive uploads.
For how to do this, have a look at this question.
There are a number of ways to achieve this, ranging from trivial to sophisticated.
Your question says that you would prefer to avoid an internet connection. Simple solutions may require it - if you want to abstract the difficult parts, you're going to have to let somebody do the dirty work, and that's probably going to be someone(thing) on the internet. Midrange solutions may require a network but not internet connection. A sophisticated solution could probably be whatever you want - but one thing I would say, is that trying to tap into the USB connector is either going to result in a hacktastic or very complicated solution to implement.
One method would be to integrate a third party framework that basically does what your looking for. Look at the Dropbox development kit, for example - allowing Windows (or any platform) users to drop files on their desktops into a shared dropbox, and this can then be read by an iOS application which includes the iOS drobox API.
Another method would be to setup a simple WebDAV server in your office. Host it on a windows box, or a cheap linux box. Give users desktop's access to the share via whatever protocol you want (eg, Windows File Sharing). Then you'd implement a WebDAV client in your app (eg, WTClient) to pull files.
Finally, you could build your own transmission system. A sophisticated example might involve Bonjour and TCP/IP, a simpler-but-custom solution may involve a simple JSON web service running off a local (or remote) server.
I have suggestion but that will require the Internet. I would suggest you to use the DropBox API in the windows and iPhone both. It's awesome to use and very simple for file sharing.
Now a days everybody have dropbox account and have files in it to share. So that shouldn't cost anything other than a bit of implementation (this learning can also be used in other file sharing applications).
Here are some guidance:
iOS
REST API
You can add apps and documents to USB-connected devices with the Apple Configurator
You may use a simple Ftp server installed on PC, so you can connect to server from Ios and upload/download files from iOS to PC....
http://developer.apple.com/library/ios/#documentation/Networking/Conceptual/CFNetwork/CFFTPTasks/CFFTPTasks.html
All work is done by Pc and your app will use IP (Intranet or Internet) of PC to share all files.
From Ios you can read all files in FTP server and work with them.
I use the FileBrowser app to get access to network shares over WiFi and will allow you to load supported files to the device. The company responsible is creating an API to allow you to do this within your own app: https://twitter.com/#!/Stratospherix/status/193114857271336960

Resources