iPhone: Software Development And Distribution - iphone

I have a few quick questions about the iPhone software development. I did some research about the topic, but there are a few specific things I would like to ask here, because I will have to estimate the cost of the required hardware and software, before I am allowed to buy anything. I never did any Mac development nor have I ever owned an iPhone, so needless to say this is quite hard for me.
I will buy an iMac mini with 2 GB RAM for iPhone development. I will have to use it at the same time as my regular PC, but the majority of the time I won't use the Mac at all. Do I have to buy an additional monitor, a mouse and a keyboard or is there a better solution?
I will have to port a C library to the iPhone platform and develop an iPhone application that uses the ported library. Do I need anything else than the iPhone SDK to do this?
If I use an external library (see above), can I test the application with the integrated emulator, or is it recommend to buy the device?
I will have to send data to a remote webservice. Aside from this I don't require any other features. Can I just buy the iPhone online from another country (the iPhones here are sim locked), or should I buy one with a contract?
When the application is ready, it will be installed on a few iPhones owned by our customer. Because of security reasons it is crucial that there is no third party involved in this process (i.e. the application should not be distributed on the app store). Is this possible?

If you don't use both computers at the same time it's perfectly possible to use the same monitor and keyboard / mouse for both computer
With the SDK you're set, also, you probably won't need to port the library since C is a subset of objective-C and your library will be available for use with the sdk right away.
The simulator can understand external library just fine
Countries like italy sell the iphone without a contract, you won't have any problem with those. Bear in mind that if all you need an iPhone with a camera then the 3g, 3gs and even the 2g will suit your needs, as all of those have cameras.
Yes, there's an option for distribution called "Ad hoc distribution". Using that you can install you app in your client phone without going thru the appstore

Related

iOS development on Windows [duplicate]

This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
How can I develop for iPhone using a Windows development machine?
I've read a lot of questions and answers about developing iOS apps on Windows:
iPhone development on Windows
How can I develop for iPhone using a Windows development machine?
But most of the ways to accomplish this is because the people with this problem (make ios apps on windows) want to make apps for themselves. Also, some of them suggest web apps.
I'm working for a company who needs to make a little App (later other companies will need more) and the person who is in charge of all about IT told us that we need some facts so we can demonstrate that we really need a Mac for developing apps for iOS legally.
First, I don't know if all that says on this page would be enough https://developer.apple.com/support/ios/ios-dev-center.html
To develop with the iOS SDK and Xcode, you must have an Intel-based Mac
running Mac OS X Snow Leopard or later and you must be registered as
an Apple Developer.
Now I have some questions:
Is there a legal way for a company to make iOS apps on Windows?
If one of those ways is running OS X under a Virtual Machine... Is it possible to do it with OS X Lion USB Thumb Drive?
I know there are some SDK such as Marmalade, Corona, DragonFire... and they give us licenses but are they 100% reliable? Would apple give us support if we use one of these SDK?
Does Apple check if the app was created over a legal OS X copy? I mean, when the code is compiled, is there a sign so Apple can check that the app was made without cheating?
Creating games on OS X (VM) would be hard?
In the case we get the Mac (mini)... Would we need the Magic Touch or Magic Trackpad to test multi-touch? Or is only possible doing it by pressing one of the keys plus the left click?
Creating Web Apps would be a solution? I know that we can't use the Camera of the device using Javascript but is the rest ok?.
Testing
Some of our co-workers have iTouchs but we don't know if the company should buy a new one. Also, Would you suggest to get the oldest generation of iPod Touch for testing purposes or only the 3rd and 4th generation?
I hope you could understand me. Thanks in advance!
Update:
I got this answers:
You will work over Windows with the respectively SDK
Me: I know there isn't an official SDK for developing iOS apps on Windows from Apple.
The programming language that we will use is the same it would be install on a PC or MAC.
Me: Impossible?
Update
We got the Mac. ":D"
While there are things like FlashBuilder, these solutions don't provide the performance or flexibility of an actual native application. As for virtualizing OS X, this is not an option. The EULA for all versions of OS X specifically prohibit hardware virtualization (though I believe Lion allows for it but only when running directly on genuine Apple hardware. In other words, there is no way to run OS X on any computer other than a Mac without violating the EULA.
I dont have a Mac, but i setup a hackintosh (MacOSX running in pc) by following guide from this blog http://tonymacx86.blogspot.com/. If your pc spec is compatible, the Mac OSX will running flawlessly, just like in normal Mac.
Since you ask this question, I assume you dont want to fork a money to buy Mac, so setup a hackintosh machine is the best option for you. You just need to spend some money for buying legal copy of Mac OSX. Yeah I also setup the hackintosh in order to develop iphone apps on a pc.
Although there are always hacks and work-arounds you'll need a Mac for any serious iOS development. You can pick up a Mac Mini for under $1000, I'd be surprised if you could setup a Windows machine that could build iOS Apps for fewer than $1000 worth of man-hours... plus you'd probably end up having to constantly tinker to keep it working.
AFAIK, Mac OS X doesn't reliably run in a VM on a Windows Machine, but that could have changed since I last checked.
Most of the cross-platform development tools fall back to HTML/Javascript-based technology that is run in an embedded browser and packaged with a custom tool, I'd tend to avoid those as the Apps that they produce will not feel native.
I don't believe that Apple checks to see where the code was built. Adobe's FlashBuilder can export to an iOS binary, those Apps are accepted by Apple.
Creating them shouldn't be hard... testing them may be a little slow, but you'll definitely want to test on real hardware early and often.
If you get the Mac Mini you may hold option and click to simulate a dual touch in the iPhone simulator, but for more significant multi-touch testing you'll need to target a real device.
Depending on your goals, a web app may be a good solution. You'll potentially lose some performance, and some control, but you may not need all that much to accomplish your task.
My personal experience with IT has always been like pulling teeth to get them to allow/support any Apple product. Don't let them talk you into some patch work alternate system for making apps. Straight up OSX is far and away the best way to go, especially since you guys are talking about doing more later. Do it right from the start.
Now with adobe flashbuilder you can make iphone apps through windows http://www.adobe.com/devnet/air/articles/packaging-air-apps-ios.html it would all be coded in actionscript just like flash however looks pretty much alike. Personally I have never used it, i own a mac, but my school does cheers
Also I know you can put apps from this builder right into the app store just like the OS X process
You cant put it directly on a thumbdrive because OS X boots differently, you would need to install a new boot loader on you computer, but it can be done, look up Hackintosh
Finally , you do not need the magic touch pad, it is not possible to do multitouch while running on the simulator via OS X, you must put the app on your phone to test multitouch
Is there a legal way for a company to make iOS apps on Windows?
My advice is to try as hard as possible to get an Mac.
But just to provide another alternative :
Try Phonegap. It's basically a HTML5 wrapper, mainly used by app that needs to be published in multiple type of devices. However it also able to access native resource like camera and storage, which you can see in their feature page.
If your concern is more into development machine, by using Phonegap you can develop an app in any OS. You don't need to buy multiple mac for all the developer.
PhoneGap also have a service called PhoneGap build which is actually a cloud service that able to build your code to multiple platforms, including Iphone. This is legal and you can publish it App store.
If one of those ways is running OS X under a Virtual Machine... Is
it possible to do it with OS X Lion USB Thumb Drive?
No, You can only run OSX virtual Machine in OSX also.
Creating games on OS X (VM) would be hard?
It depends on the developer. But since the game should be tested in emulator, your question is not that relevant.
In the case we get the Mac (mini)... Would we need the Magic Touch or Magic Trackpad to test multi-touch? Or is only possible doing it by pressing one of the keys plus the left click?
Xcode Emulator able to simulate that. Read this blog
Creating Web Apps would be a solution? I know that we can't use the
Camera of the device using Javascript but is the rest ok?
If you are using PhoneGap, it's basically web apps wrapped by native. It's still give you access to resource like Camera, Compass, Storage etc.
Would you suggest to get the oldest generation of iPod Touch for
testing purposes or only the 3rd and 4th generation?
The iOS 5 SDK has many new features that make app development easier. By the time your app is ready for release, most users will have moved on to iOS 5. It is my understanding that iOS 5 does not support 3rd-gen devices, so there's no point in obtaining those if you're going to use SDK 5.

Can I develop mac/iphone/ipad applications without having to paying first?

I'm interested to know if I can have access to all the libraries, ide, etc for the iphone/ipad/macos without paying the 90 bucks(for learning purpose).
Do I have to pay to have access to everything in order to start developing? I'm not talking about the istore by the way. I know that there is a fee for that.
Thanks.
You can download the SDK and simulator for free. If you want to install it on a iPhone, iPod Touch or iPad for testing, or submit to the store, you have to pay the $99.
http://developer.apple.com/programs/ios/develop.html#compare
The simulator is useful for some testing, but it has many limitations. If you're developing applications that use the camera or other hardware devices, certain types of multi-touch, etc you're going to want to try it on a real device sooner rather than later.
Developing for the Mac is, on the other hand, completely free.
You can start developing iPhone/iPad apps for free but you must pay in order to test your applications on real devices. Without paying you can just test your applications in the simulator.
You can use the iPhone Simulator for free, but to install on your device you'll need to join the developer program in order to create the certificates needed to install apps on a real device, even if it's just yours. This assumes that you don't have a jailbroken device.

Creating an app file that can be installed on an iPhone before it's uploaded to the AppStore

My boss wants me to develop some apps and make them appear on the AppStore.
This is a very small company, he paid the iPhone developer program fee and I am responsible for the rest, I have full access to the account.
I've finished the development on my mac using the simulator. But now I have to test the app on an actual iPhone before it's submitted to the AppStore for review.
The problem is that my boss and I both do not own an iPhone and do not have much money to buy one.
My friend has one and he can test the app for me if I can provide him with a way to download and install the app (his PC has Windows XP and iTunes installed), we live far from each other so it's not feasible to borrow his iPhone and have it directly connected to my mac and run the Xcode to do the testing.
I am going to skip the Development Provisioning Profile stuff and directly jump into the distribution stage.
I would like to know whether the app file created in the distribution stage (the one to be uploaded to AppStore) can be copied into a Windows platform and have it installed on an iPhone.
I'm not sure why you want to skip that part of the process, since that's how you'll test your app on an actual device, before getting to the App Store approval process.
If you log in to the Apple iPhone Developer Center, you can click on the Provisioning Portal link to download the Program Guide.
Within this PDF, go to the sections "Assigning Apple Devices to your Team" and "Creating and Downloading Development Provisioning Profiles" to learn how to build a copy of your app that can run on test devices.
What you're looking for is ad-hoc distribution, which will allow you to hand this application, along with your provisioning profile, to your friend and have him install it in iTunes under Windows. You will need to get the device ID from him first (found in iTunes when the device is connected) to create the proper provisioning file. Apple has thorough instructions on this in the iPhone portal site.
That said, this is a terrible way to do iPhone development. First, not owning an iPhone means that you are probably not familiar with its application UI conventions and how the device behaves in day-to-day use. Things that seem like good ideas when working in the Simulator, which is a mouse-driven environment running on a nice, large monitor, turn out to be unusable on a portable device.
The device also has vastly different performance characteristics than your Mac does. Your friend may be able to point out a few things going wrong, but you really need to hook the device into your Mac and run your application while monitoring Instruments for memory consumption, CPU usage, and other parameters that might point out leaks or other subtle problems. It is for this reason that I spend days hammering on each version of my application on the device before submitting to the App Store.
If you are at all serious about iPhone development (which, judging from the line "develop some apps and make them appear on the AppStore", you are), you need to at least pick up an iPod touch for development. If college kids can pay for one to develop applications on, your company certainly can. Check eBay, where I'm sure people are offloading first-generation models for relatively cheap.
Like #Brad Larson said. Get a iPod Touch, I see some 1st gen ones on ebay for $90. Realistically if even a new iPod Touch is too much money for your employer then I'd start looking for a new job. If an employer is too broke to buy you equipment to do your job that costs less then 1 day of work for you it won't be long before they can't pay you. Been there and still trying to get back pay...

Is Android development restrictive in any way like for the iPhone?

Is Android development restrictive in any way like the iPhone, or can you download whatever and from whoever you want?
I want to learn about development for either iPhone or Android, but from what I hear iPhone development is pretty restrictive!
There are a variety of areas to consider regarding the relative restrictiveness of the two platforms.
The Market
Android Market is undoubtedly less restrictive than the App Store when it comes to the submission process. The upside is that you can get pretty much anything you want into the Android Market. The downside is that you can get pretty much anything you want into the Android Market (a market flooded with spam "applications" is in some ways a restriction).
A big negative on the iPhone side is the fact that your options for installing applications that are not in the App Store are limited -- you can either distribute the application as a beta (limited to 100 users) or jailbreak your iPhone. Android, however, allows you to install apps from anywhere, including a web page.
The Applications
One of the core design philosophies of the Android platform is "All Applications are Created Equal", which is supposed to mean that you can freely replace applications on the phone with a third party version. In practice this is not really the case, as many of the Google applications either have special capabilities not available to most applications (see: Android Market) or use undocumented/native APIs (see: Calendar).
The iPhone on the other hand makes no such claims about equality, and the Apple stance in general is "There is only one way to do it, and that is the Apple way". Additionally third party iPhone applications may not run in the background while Android applications can. New for iPhone OS 4.0 is the ability for apps to run in the background. One thing iPhone applications can currently do that Android applications can not is receive push notifications. New for Android 2.2 is the ability for apps to receive push notifications via something called the Android Cloud.
The Source
Android is open source - mostly (some firmware components are closed source). Even so, there is some rocket science involved just in getting the Android codebase to compile. In addition Google has sent cease & desist orders for redistributing custom images that include the Android Market and Google Maps application.
The iPhone is completely closed source, and recent changes to the developer agreement have been controversial as they mandate that all apps submitted to the app store be originally written in "Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs"
The SDK
The Android SDK can be freely downloaded; the iPhone SDK requires free user registration to download. Android development can be done under Mac OS X, Windows or Linux, while iPhone development is only possible under Mac OS X. You'll also need to pay for the $99 iPhone developer account if you want to test your software on an actual device (rather than the simulator).
The Userbase
And last but certainly not least, the userbase. When this answer was originally written the iPhone had a much larger userbase and was growing much faster than Android. This is changing as Android begins to support multiple carriers and hardware platforms (see: the Open Handset Alliance). The list of devices running Android is now quite long although none yet match the popularity of the iPhone.
Some analysts are now reporting that Android is outselling the iPhone and are predicting that Android will soon overtake iPhone for market share. Other analysts think that Apple will make up ground when the iPhone 4g is released. The former seems more likely based on the parallel history of the PC industry -- Apple's design and user experience were copied by GoogleMicrosoft and opened up to run on commodity hardware.
Nope! That's the beauty of Android. Even though there is a AppStore equivalent, you can download an app from anywhere. Plus, it's programmed in Java, so you don't have to worry about all that mundane stuff like garbage collection (just at the cost of speed).
Don't mean to insult the iPhone. It is a great platform too.
EDIT: A lot of people have been noting that the iPhone APIs are not restrictive, but rather the approval process is. This is true, however the iPhone's APIs are still somewhat limited, in the way of low level hardware access, backgrounding (only notifications in 3.0), etc.
iPhone 3.0 is a step in the right direction, but there is some work left to do.
Also, have you considered making JB iPhone software? I'm not sure of it's market share, but I do know of a lot of people with Jailbroken devices.
EDIT: I have read in some more posts on similar questions that Android's Java can slow things down due to the Garbage Collector. Just something to watch out for.
If you say iPhone is restrictive, I would describe Android as immature.
There are still many bugs in Android that you will inevitably run into if you are doing some none-trivial programs. Some of those only exist on the emulator while others only on the actual phone.
Though in my experience, developing on Android with Eclipse feels just as good as developing on iPhone with Xcode, if not better. The tool set provided by Google is very complete and is cross-platform. Garbage collector does make huge difference while programming.
I'm assuming you already have a Mac otherwise the iPhone wouldn't be an option at all.
iPhone development isn't particularly restrictive. Getting the resulting app on Apple's App Store is the restrictive part.
If the app you're working on follows Apple's guidelines on what an iPhone app is allowed to do, picking that as your initial development platform seems a no-brainer. If it violates Apple's guidelines and can't be modified to follow them, your market will be restricted to jailbroken phones - a very small subset.
Well is Apple open at all? Uhm.. eh.. no. Closed hardware, closed software, closed everything. I think Alcatraz is more open then Apple, at lease you get to leave your cell there.
You can write an application for the iPhone. Will it get approved? Well not sure. They could deny it for any reason whatsoever. You may have used a blue background and Apple only likes white and gray, thus deny.
However with Android it is completely open. You can develop for it, or even develop Android itself. No fear of ever being denied.
But in all seriousness. Apple has a larger market share, millions of people use and love the iPhone and they will most likely not be leaving for quite a while. While on the other hand the Android was for T-Mobile. Does anyone even use T-Mobile?
IMO if you do not have a gPhone I would develop for the iPhone. However as much as I dislike the Apple philosophy of being such a closed nature, they are the better bet if you wish to make some money with your application.
There are some restrictions...
some functionality requires rooted phones (e.g. Wireless Tether for Root Users)
distribution via the Android marketplace is subject to the Developer Distribution Agreement. Google limited access to this tether app due to their carrier agreements.
some Android APIs are not finished (e.g. Bluetooth HID)
'Restriction' can mean two things:
The ability to install anything you want. Google is very good at that, Nokia somewhere in the middle and Apple is the worst
What you are able to do with you app. They all have arbitrary restrictions on what you can and can't do, but it seems to me Nokia is the least restrictive, Google inbetween and Apple the worst (again).
YMMV
No, you can sign the application yourself and distribute the resulting APK file via your own web server or by other means.
Yes, Android is indeed open and you can publish whatever you'd like to the Market Place
But:
you still need to learn how sign your application and mind the technical posting requirements to the market (like keeping proper version IDs etc.)
if you really want to get/send a package from/to anyone, then the receiver of the package (called an APK file will need to know how to use a command line tool called 'adb' to administer their phone to install & uninstall applications. It's pretty simple to do, but
you need to have Android drivers installed and the SDK tools.
To be fair to the iPhone development model, you can also distribute test versions of your application reasonably easily, though perhaps not as easily as with Android. Your testers need to provide you a special device ID which they get from iTunes while the device is connected, then you create a license file containing keys for all of your testers which you distribute with the release directory of your application. The users then install your application via iTunes.
In most cases no, but Google has allowed the carrier and the device manufacture the ability to restrict certain things. Carriers are allowed to block individual apps. Also carriers/manufactures can prevent certain features of the device.
One example is the Motorola Backflip, it wont let you install non Official market applications. Also some phones do not have access to the Official Market.

What can I do with an iPhone and no service?

I'm interested in developing software for the iPhone camera, but I don't currently own an iPhone and don't really want to pay for service. If I were just doing general app development, I'd probably just pick up an iPod Touch, but the Touch doesn't have a camera.
I know I can walk into the AT&T store, buy an iPhone and immediately cancel service. But what can I do with the resulting iPhone? Can I:
... develop apps for it using the native SDK?
... download apps from the app store (over wifi)?
... use it for everything that I can do with an iPod Touch?
More generally, is this just a bad idea for some other reason?
You could jailbreak it and use it on a non-standard plan and pay less money.
You can still develop on a phone after it's jailbroken. You can also still develop on a phone after it has been unlocked. The difference is important:
Jailbreak: You can install applications not available in the app store.
Unlock: you can run the phone on other networks besides it's default carrier (AT&T when in the USA).
Note that you cannot at this time unlock an iPhone 3g running 2.2.1, which it almost definitely will be if you buy it new. You can jailbreak both iPhone and iPhone 3G.
Also be aware that if you buy a new phone, AT&T will charge you $200 to get OUT of your new contract. I think that goes down by 10 or 20$ each month, so that after a year, it's considerably less costly to get out of the plan.
What I suggest is buying a first generation iPhone on ebay or craigslist. First generation iPhones can all be unlocked, irrespective of whether the previous owner put 2.2.1 on them. Also they are much cheaper, have the camera and are totally fine for software development. I was able to find decent first generation iPhones in Seattle just 2 months ago for about $250 - $350 dollars depending on details. Unlocking/Jailbreaking takes a matter of minutes with QuickPwn, and the phone works great as a development platform.
I believe your iPhone must be activated to be used as a target device in xcode. While it would be activated after purchase you would have problems if you cancelled your account and then needed to restore it at somepoint.
If you do wish to support the camera its possible to develop on an iPod Touch - the mechanism for taking a photo is identical to selecting a picture from the library, you specify the source (camera/library) and the rest is handled by the OS with your code receiving the final picture.
If your app is going to be very camera-centric you should invest in an iPhone, but if it's for minor functionality you can probably get by with a touch.
I believe your iPhone must be
activated to be used as a target
device in xcode. While it would be
activated after purchase you would
have problems if you cancelled your
account and then needed to restore it
at somepoint.
No it does not. You can jailbreak to start and it will work fine.