I've spent the day googling all the leads on developing iphone apps on Windows and apart from buying a mac the most suitable route seems to be Phonegap. I cannot find out whether Phonegap gives access to all the native functionality. For example I want to access and manipulate the address book contents. I also want to be able to send text messages programatically and intercept and examine incoming text messages. It would be helpful if someone could confirm whether this can be done with Phonegap.
My understanding is that Phonegap is based on webapps but I am assuming that an app developed with it can run offline for operations that dont require internet access.
Even using Phonegap you will still need access to a mac to actually build your iOS application. This is a restriction that Apple has in place, and to my knowledge there is no way around it.
Phonegap uses a UIWebView to display your application built using HTML, CSS, Javascript etc, but this does not mean that an Internet connection is required for the app to run (so offline apps are definitely possible).
With regards to Phonegap's functionality, details of the Phonegap API can be found on their website. Specific to your needs, I believe phonegap provides access to the device's address book through the contacts API:
http://docs.phonegap.com/en/2.3.0/cordova_contacts_contacts.md.html#Contacts
I don't think Phonegap provides the ability to send SMS messages itself, but many people have developed extensions to add extra functionality to their applications through plugins. The majority of Phonegap iOS plugins can found at the following GitHub repo. The plugin I think you require is the SMSComposer:
https://github.com/phonegap/phonegap-plugins/tree/master/iOS/SMSComposer
Related
Let say were starting a website from the ground up and want to also create apps.
Could you just create the website with a REST API's and have it work on browser and PhoneGap? Would there be a conflict with Cordova plugins you may use?
So the design is responsive and its all HTML, CSS and Javascript and connects to a REST API (log in, reg, messages, db calls, etc) for the browser website and apps.
This way you can use the same code for everything and can still use some of the great Cordova plugins for the app to make it more flexible.
Would this work?
I posted this answer else where but I think it is relevant here.
Unfortunately for your app to pass Apple App store approval it will have to provide some basic functions and display correctly without an internet connection. This means at a minimum, if you plan to generate content on a server you will probably need the Cordova plugin for network information:
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-network-information/
I would make sure you are familiar with the Apple Human Interface Guidelines:
https://developer.apple.com/ios/human-interface-guidelines/overview/design-principles/
You will probably also need to bundle any JavaScript. Apple is very picky about apps that download code (this can include JavaScript).
This is a section from the iOS developer Agreement.
3.3.2 Except as set forth in the next paragraph, an Application may not download or install executable code. Interpreted code may only be used in an Application if all scripts, code and interpreters are packaged in the Application and not downloaded. The only exceptions to the foregoing are scripts and code downloaded and run by Apple's built-in WebKit framework or JavascriptCore, provided that such scripts and code do not change the primary purpose of the Application by providing features or functionality that are inconsistent with the intended and advertised purpose of the Application as submitted to the App Store.
Another big concern is performance. How will your app handle a poor 3G or even 2G connection? Do you need to cache the responses from the API and only download them if they have changed on the server?
If a user is browsing your website on a browser they know they need an internet connection, if they are using your app they want it to work when online and offline.
Edit
Apple commonly uses this reason for rejection for website only apps.
We found that the experience your app provides is not sufficiently different from a web browsing experience, as it would be by incorporating native iOS functionality.
While your app content may differ from your web site or other existing sites, the experience it provides does not differ significantly from the general experience of using Safari, as required by the App Store Review Guidelines.
I am creating my first native phone application using dreamweaver and phonegap build service, one of the most important features I need is the ability to send push notifications. That being said I am having a hard time finding a tutorial on integrating xtify with an app built in dreamweaver. any suggestions? All the documentation on xtify assumes I am building the program in phonegap. First thing you need to understand is that I am not a programmer, I work for a non profirt organization and this is just part of my job here.
Dreamweaver uses Adobe PhoneGap Build which packages mobile apps in the cloud. They don't support custom phonegap plugins (like Xtify) yet but they are working on it. Details here.
From the website:
Right now, you cannot submit your own plugins to PhoneGap Build and
have them included on our system. We are working on the infrastructure
changes to allow this support.
I'm currently developing an iPhone version of existing Android application.
Customer wants to provide his web services via mobile apps. On Android this is made in a modular way: user installs main app, and then he can download additional modules to it if needed. That way he can install only modules that he needs.
Is there a way to achieve same functionality on iPhone? I read about In-App Purchasing, but I don't know if it will work because additional functionality will not be built-in and unlocked - it needs to be downloaded and added to my app as a new module - so user's space would not be wasted with unneeded modules.
Thank you!
2.7 Apps that download code in any way or form will be rejected
From App Store Review Guidelines
Judging by the question, this is not a world-facing app - it has a specific customer. With Terente's answer in mind, do consider side-loading, AKA in-house distribution. That is - bypass the app store. The prohibition on the downloadable code is an App Store policy, not a limitation of the platform.
The enterprise contract with Apple is $300/year instead of regular $100/year. But you get to install your app on as many devices as you wish, completely bypassing the App Store. Either over the air (by browsing from the phone) or via iTunes.
Under this model, your app can download, store and run custom code all you want. The specifics of the plug-in model are up for you and your customer.
EDIT: so app store is a must. How about this: have a WebView in the project, have it download HTML pages with JavaScript in them, have code hooks for JavaScript to call. To the best of my knowledge, AppStore does not reject apps that display Web pages from the Net, and if the Web page happens to have a script, there's no prohibition on executing that script.
This violates the spirit of the rule while relying on letter and precedent. Technically speaking, JavaScript IS code. And again, technically speaking, WebView is capable of downloading and running it. And App Store is choke full of apps with WebView in them.
How will this fly with your customers, who knows.
I'm writing a web application using Dashcode. Is it possible to access the iPhone address book from within this web application?
Dashcode is just the development environment IDE for generating widgets and iPhone apps and actually write the apps using JavaScript, HTML and CSS. Any app you make will need to sit on a server and be accessed through the mobile browser on the iPhone. So the question is can you/i connect from a web app to the iPhone native applications. Just from a security point of view i would doubt that this is possible or even desirable,
However i have seen suggestions that a native application in x-code could be built that would have a web interface that would be able to talk to the browser but i am not sure how you would engineer that or if it would work.
I suspect a simple solution is to sync your iPh=one contact with Gmail, or similar web app and then access it or write your own server that you sync contacts to. However this is not a general solution i suspect.
Hope this helps even though it is not the answer.
I think about starting from scratch building a small application fullfilling two technical requirements:
should be usable on iPhone
should work offline
There are two obvious alternatives here to choose between
A real iPhone application with offline capabilities
A web app using HTML5 offline, Google Gears or similar
Having no iPhone app development experience (I don't own an iPhone), i wonder which way would be the easiest to go?
What are the learning curves for building offline HTML vs building an iPhone app?
Honestly, it depends what your app is going to do.
MobileSafari supports all the HTML5 offline stuff, so you could store data in a clientside SQL database, cache the application clientside, etc... The mobile Gmail app is probably the most notable example of that, giving you full-featured access to your Gmail even when offline. You can also use geolocation through JavaScript APIs that were added in 3.0. Web Clips let your web app share the home screen with native applications too. There is more on using web apps on the iPhone on this Stack Overflow post.
Obviously, doing a Web app will be of interest to people who like dealing with HTML, CSS, and JavaScript (and possibly whatever language is running server-side). It is possible to do really neat stuff with offline Web apps, but its performance won't be as good as that of native apps, especially on pre-3GS devices.
Developing a native application will require you to learn Objective-C (or C# as soon as Mono Touch is available to the masses) and pay a $99 fee to be allowed to test on-device and deploy to App Store. A lot more of the system is exposed to you through the various APIs, such as the camera, compass, multitouch, and so on.
Objective-C is pretty simple to pick up if you're familiar with Java; you only really need to get used to the square bracket syntax and memory management and then it's pretty straight-forward.
Then there are the hybrid systems, like PhoneGap, which expose more of the device's APIs, provided the Web app runs in a special container app. It is also crossplatform, so you could also deploy the app on Android and BlackBerry if you wanted to. This still requires you to pay the App Store fee, but if you're more familiar with Web development, this gives you the best of both worlds.
I can't tell you too much about HTML apps in general, but I can tell you that the API for the UIWebView is extremely minimal, and of course there is much less you can do than in a native iPhone application.
An HTML5 offline app would have security issues as you would have to hard code your oauth secret into code that anyone could see ( by clicking view source, or inspecting in Firebug ). You could simply use http auth, but then you get the ugly "from API" credit with every tweet sent from your app, and also that ugly http auth popup from the browser.