By now I’m sure you’ve heard (and taken part in) all of the discussion about the upcoming rule change in the iPhone Developer Program License Agreement. The understanding is that it basically says you must write your iPhone OS 4.0 apps directly in one of a few select languages and that if you’re using tools such as the Packager for iPhone in Flash CS5, Titanium, Corona or any of several others out there, you’ll be in violation of your agreement with Apple. Also, according to another new rule, you’re in violation if you talk about this so I’ve held off on agreeing to the updated terms thus far. (we’ll see if I have to remove this post after I agree at a later date)
The new (reworded) rule:
Because I’ve been working with the Flash Platform for so many years now and because it has essentially built my career, it’s honestly a little hard to be completely subjective about this matter and I can tell that there are others out there struggling with the same issue. I mean really, don’t you think that suggesting Adobe should stop shipping/supporting their products on the Mac is a little bit of a childish, schoolyard slap-fight approach? I do.
Don’t get me wrong, I think this was a complete dick of a move by Apple and even more so when you consider that they did it just days before the CS5 launch event. However, it’s their toy and regardless of how much you or I disagree with them, that really kinda makes it their choice. By the way, the 4.0 OS is still in beta and that means terms could still change before a full launch. They most likely won’t, but they could. So if Apple lets this rule stand beyond its current beta state, what in the world will we do as Flash Platform developers? How will we possibly carry on? As far as I can tell, we have a few options (in no particular order):
Option: Completely boycott Apple
If you want to stop giving your money to Apple over this issue, I can understand that. If you want to purge yourself of your sweet MacBook Pro and your Apple TV and all of the rest of the nice products that I’ve heard so many of you brag about and swoon over through the last several years, I guess I can understand that. BUT, if you’re going to “boycott” Apple, then don’t half-ass it… go all the way and throw away all of those toys that you love so much. On second thought, how about if you just email me so I can give you a shipping address to send them to? Didn’t think so.
Option: Don’t develop for the iPhone 4.0 OS
Ok, so the iPhone and iPad are super hot products right now. They’re the cool kids in school that everyone wants to be and hang out with. They’re the crème de la crème. They’re the blah, blah, blah. So what? “But Jason, clients are asking for iPhone apps.” Well, I guess you’ll just have to tell them that you don’t offer that service and you’ll lose that project and that money… unless you want to consider the next wacky option. Besides, the iPhone OS is only one of MANY development targets out there so you still have lots and lots and lots of playgrounds where other cool kids are playing other cool games… and those kids actually want you to come play with them.
Option: Learn Objective-C
“*GASP!* WHA? HUH? BUH! You mean… spend my own time… to increase my own knowledge… and my own skill set?!? Why that’s absurd!” Ok, so that’s a bit of an over-dramatization, but I have seen people acting a little bit like that. Look, I understand that doing development in an environment your comfortable with is very important and I feel the same way. But imagine if you had that attitude when you came from a different background and started learning Flash or Flex. Besides, I subscribe to the thought that the more you know, the more you’re worth to a potential employer or client.
Personally, I was very excited and looking forward to having the option of using the Packager for iPhone, but I had also decided to start learning Objective-C so I would have the option of either one when a project called for an iPhone app. As a matter of fact, I had actually built an app in CS5 and had it approved in the App Store back in January. I was recently told it was ok to talk about it, so I finally wrote a little post to “announce” it as well as my first Obj-C app. The timing on that post couldn’t have been more… ironic(?) because it was only hours later that the new rule was announced. I guess I won’t be going back to make that app look better.
In the end, we developers are FAR outnumbered by non-developer users of the iPhone and iPad. Those users don’t know (and don’t care) what technology was used to build an app so I’m afraid that when the market decides, it will not decide in our favor in this case. But don’t forget, this is not the only battle… this battle doesn’t even touch on the Flash Player in mobile Safari issue.
So there you have it. My thoughts on Apple’s new rule. Like I said before, Adobe IS my career and I completely disagree with Apple’s choice to block them (and other companies) out of iPhone OS 4.0 development, but there may not be much that can be done about it (obviously I can’t speak to the legal side of it) so my personal choice will be to continue to learn Obj-C (since I’ve already started). But don’t worry, the Flash Platform will ALWAYS be my first and main choice. Besides, I don’t think I like the sound of ObjectiveCanon… just doesn’t have the same ring to it.
I’ve been interested in learning iPhone development for a long time but always had some excuse for putting it off (working on the book, deadlines at work, etc, etc). However, I’ve finally had an opportunity not only to get around to it, but to do so with two different approaches. The first was Flash Professional CS5 with ActionScript 3 and the second was Xcode with Objective-C. While I do like having the option and ability to create apps with Flash (I also plan on looking into tools like Appcelerator Titanium and Corona), I think it’s important as a developer to at least try to learn/understand what’s happening behind the scenes and how to do it the “native” way. With that said, here are the apps:
I wrote this post this morning before Apple had their little iPhone OS 4.0 event where they announced a new change to the iPhone Developer Agreement that may ban the use of the Packager for iPhone in Flash CS5 for future development. Here’s a tad more info on the subject.
Tools: Flash Professional CS5 with ActionScript 3
Launched: Jan 19, 2010
More info: Here
Memory4Kidz was my very first iPhone app to both build and get accepted to the App Store. It’s a simple memory/matching game and the great thing about building this app with Flash was that I already had the code which I had used in a couple of previous game projects. Since I had the AS3 classes for the game engine, the card deck, etc already written and tested, I really only had to create new images to accommodate for the difference in screen size and make a couple of minor tweaks to the code. Once those things were in place, I went through the fairly simple process of publishing the app via the Packager for iPhone in Flash CS5 and I can honestly say that the only real issues/problems I had were more to do with the fact that the process itself was still being developed and kinks were still being worked out. I can also say that the particular issues I faced no longer exist in the process. While I’m not excited about the extra file size that Flash added to this app, I’m very happy with the rest of process and the ease of moving something I originally built as a web-based Flash game over to the iPhone.
Tools: Xcode with Objective-C
Launched: Apr 1, 2010
More info: Here
So to follow up building an app with Flash CS5, I thought I would go ahead and do what I had been putting off for such a long time and start learning how to build with Xcode and Objective-C. After buying a book or two to read and reference, I started with my own game called “sequenced” which is a pattern matching game where you figure out what comes next in a sequence of items. Once I got into the process, I really started to discover that I had been a little more intimidated than I probably should have been. As some of you may know, the Objective-C syntax feels kind of strange when you’re so used to working with ActionScript for so many years. However, once you start to understand things like how methods are formed (kinda backwards-ish?), it’s not half bad. Oh, and the file size of this app was a great deal less.
To wrap this up, I’ve obviously only scratched the surface of native iPhone development so I don’t feel comfortable making a real comparison between it and Flash development, but I will reiterate that I think it’s important to at least try to understand what’s happening behind the scenes and if you have the time, I definitely recommend learning how to develop both ways so you can choose the right tool for the job when your project calls for an iPhone app.
My publisher sent over the cover art for my upcoming book a couple of weeks ago and after getting their ok today, I thought I’d go ahead and share it on here. I’d also like to give a special thank you to my friends at Ovrflo Media for coming up with the cover concept.
ClickTagger is an ActionScript 3 class that I’ve written for my upcoming book and it was primarily built to solve for the case sensitivity issue that Flash developers may run into when using the clickTag variable in their banners. Without a current standard in place for ad serving companies, some use clickTag while others use clickTAG and still others use ClickTag or even clicktag. In ActionScript 2 this wasn’t/isn’t an issue, but as soon as a Flash developer or agency starts creating banners with AS3 they may very quickly encounter the problem by having their ads kicked back for not working correctly.
Well, I admit it took me entirely too long to get these files uploaded and I apologize to anyone who may have been waiting to get them. For those that weren’t waiting, the files I’m talking about are the files from the Spark Skinning session held by me and Chris Long at TexFlex09 back in November.
If you visit my TexFlex09 page, you’ll find a few things there including links to the two examples and a link to download a zip containing Chris’s PowerPoint and two Flex Project files (one for each example). One important thing to note is the Flex SDK build number used in the examples.
Again, sorry for the long delay in making the files available. Enjoy!