Keeping Track of Your Life With Day One for iPhone

Keeping a journal is something that everybody should do. It gives you something to read and go back in time, reminding you of people and events that you might have forgotten about. It’s a great way to record your experiences on paper (or computer) so that you can keep them for posteriority.

The thing is, with all the new technology that we have, who has time for keeping up with a physical journal? Well, today we’re presenting to you Day One, an app that can help you keep a journal while you are on the go and at your desk. Interested? Read on to find out more about it!

We’ve also posted a review of the Mac version of Day One in conjunction with this article. If you use a Mac, it’s definitely worth reading what we have to say about the desktop version!

Before the Beginning

About

About

Day One is a very simple journaling app that goes for $0.99 on the App Store. It even has a Mac companion and both versions work synchronized, so that you can have your journals anywhere you go. The app itself is very simple and has few features, just like its Mac companion.

You have the menus on the main page, which include “All Entries” and “Starred”. There’s also a “New” button on the right upper corner and a button to access the settings in the left upper corner. But that’s about it. Day One is as simple as they come.

Adding New Entries

New Entry

New Entry

As I mentioned, you have a little plus sign that you can use to post new things. Once you select this button, a new page will be displayed with a big text box, a keyboard, and a bar with a few details like the date, time and a few other buttons that allow you to modify the date of your entry and star it.

Once you get done writing an entry, you can click “Done” and the keyboard will disappear, showing a bar on the bottom that lets you trash, email and modify your current entry, as well as navigate the next and last entries. If you want to do nothing else with your entry, you can click the “Back” button and you’ll be taken back to the main menu, where you’ll be able to see your new note above the older ones.

Something I found very convenient in this app was that you always have access to the “New” button. It doesn’t matter what menu you are in, the “new” button will always be neatly displayed in its corner, in case you get inspired while your editing an entry or reading your old ones. Speaking of old entries…

Exploring Old Entries

Old Entries

Old Entries

You can read and navigate your old entries by going into either the “Starred” or the “All Entries” menus. The entries menu is neatly arranged into monthly categories, and each of your entries will be shown with a little preview of it and the date it was created on the corner. I found the date to be a very nice detail, since it makes navigating much more easy. If you want to check any of your entries, just select it and it will be shown in the same preview window as when you add a new entry.

The “Starred” menu shows you just that, the entries that you have marked as important. It is very similar to the entries menu, and you can go into any of the entries and remove their bookmark or edit them from the preview window.

Connectivity

The first time you start Day One on your Mac, you’ll get prompted with a message that will ask you if you want to keep your journals synchronized with Dropbox (that is, if you have Dropbox). If you set it up to work with it, you can then go to your iPhone version of Day One and activate your Dropbox account through the settings. You’ll have to provide your email and password, and then you’re done.

Day One on the Mac

Day One on the Mac

Now you will have both of your versions of Day One synchronized. But why do they use Dropbox for their synchronization? Well, I’d never seen this done before in an app, but it’s very smart from the developer as he doesn’t need to have any sort of server up, everything is handled by the Dropbox servers. While this connectivity is a bit hard to set up the first time, once it’s up it will work seamlessly.

So, What’s the Point?

I guess it’s kind of hard describing the functionality of this app as it sort of fits the space between note taking apps like Evernote, and journal apps –which are still a pretty new and unexploited category– that can take in all of your activity during the day and file it under its file system so that you can have a log of your activities and thoughts.

These apps also bring up a lot of comparisons to personal blogs, as much like them, they give you the ability to write whatever you feel at any given time, except privately. Sometimes there are things that we’d rather keep to ourselves instead of posting them all over social networks, and this is why I think these kind of apps are useful. They give you an outlet to keep a log of your thoughts without having to worry about other people hearing about them, so that you don’t have to wonder whether a tweet or post is appropriate for your family to see.

Conclusion

Day One is a very, very simple app. Under the “About” menu of the app, it says “Day One is committed to creating a simple way to document and remember your life”, and that is exactly what the app achieves. It doesn’t have any big features like attachments or social network integration, it’s just simply a great way to quickly document whatever is going on in your life.

Would you be willing to keep up with a journal? Would you use an app like this? Tell us why in the comments!

We’ve also posted a review of the Mac version of Day One in conjunction with this article. If you use a Mac, it’s definitely worth reading what we have to say about the desktop version!

What Is NFC and Why Should I Care?

Tech blogs have been buzzing about Near Field Communication for some time now, hailing it as a major player in the future of portable electronics. In fact, the current wave of rumors indicates that the iPhone 5 might make use of NFC in some capacity.

So what is this voodoo technology that might or might not show up in your next iPhone? Will it make your life better? Should you be excited about it? Read on to find out!

Meet NFC: Magic from the 1800s

If you’re a sports fan, NFC stands for National Football Conference. Naturally, technology nerds had no idea this abbreviation was already taken so they chose to call a new form of close-range communication technology, “Near Field Communication”.

At heart, NFC is exactly what it sounds like. A way for devices to communicate when they are near each other. In fact, two devices using NFC can not only share data, but also power. You read that right, NFC is capable of wirelessly transmitting power to an external device. So device “A” in your hand has no battery but is actually being powered by device “B” on your desk.

Wireless energy transmission sounds like it’s straight out of Star Trek, but the ideas in place here are based on principles discovered by Michael Faraday in 1831! NFC accomplishes its magic through the process of electromagnetic induction. Basically, two loop antennas share a magnetic field generated by the initiator device. Any flux in that magnetic field can cause an electrical current to be produced in the target device. In fact, “near field” is actually a designation for a specific region in the field of electromagnetic radiation coming from the antennas (as opposed to far field).

If both devices are independently powered, each can take its turn generating a magnetic field, which is in turn received by the other device and the result is an exchange of data between the two. This is known as “Active Communication Mode”.

screenshot

Cell phones with NFC will be able to connect in less than a second

NFC vs. Bluetooth

That was a whole lot of geek speak so if you’re scratching your head at this point, don’t worry, you pretty much don’t need to understand any of it to get the gist of what NFC is all about.

The simple version is that NFC is a way for two devices to wirelessly communicate. We’re surrounded by devices that communicate without wires so this probably isn’t very exciting or mind-boggling to hear.

In fact, our iPhones already have something very similar built into them: Bluetooth. The very first question that I had upon reading about NFC was how it deferred from Bluetooth, surely it’s just newer and better right? The answer is surprising.

As it turns out, Bluetooth is effective over a range of within ten meters, while NFC only works in ranges of under 0.2 meters. Similarly, the speed of Bluetooth is around 2.1 Mbit/s while that of NFC is only 424 kbit/s. So the technology that is already built into your iPhone is faster and works over longer distances than the technology that you should be excited about coming in the future! What gives?

Benefits of NFC over Bluetooth

One of the clear benefits of NFC is connection time. Have you ever paired a Bluetooth device with your phone? It often requires multiple steps and can take several seconds for the actual pairing to take place. With NFC devices the connection is established automatically within a tenth of a second! NFC can even be used in conjunction with Bluetooth to automate and speed up the pairing process.

Further, the shorter range of NFC is actually touted as a benefit. Since you use NFC for distances of only a few centimeters, the likelihood of interference is much lower.

A third benefit is power consumption. When both devices are powered, NFC consumes much less power than typical Bluetooth (though Bluetooth Low Energy is close to NFC in its efficiency). However, in the instance described above where one device is receiving its power from another, NFC is actually less efficient than Bluetooth.

Which Is Better?

Though common, this question is not exactly an appropriate one as it requires a choice of one technology over the other in all circumstances. However, Bluetooth and NFC are distinct technologies and each possesses its own unique strengths and weaknesses.

In the real world we don’t have to choose one over the other but can enjoy the benefits of both working synergistically and seamlessly in the same device!

The Revolution: How NFC Will Change Everything

Now that you have a basic grasp of what NFC is and how it can co-exist with Bluetooth, you’re probably still wondering why any of this is good news. Yet another way for phones to communicate doesn’t sound nearly as exciting as the potential for an Angry Birds TV show right?

To answer this, consider what this technology represents based on the information above. NFC allows us to make near instantaneous wireless electronic connections and data transfers at close range. NFC in a cell phone means that the thing in your pocket is suddenly much better equipped to communicate with the electronic devices around it.

screenshot

No credit card required, just swipe your phone.

The app revolution has skyrocketed the usefulness of our phones in the digital world with games, web browsers and productivity tools. NFC will do the same for the usefulness of our phones in the real world. Credit cards, security badges, plane tickets, all can be potentially replaced with simply holding out your cell phone.

There are educational and fun implications as well. A museum or landmark could transmit information to your phone about the location and connecting with someone nearby on Facebook will be extremely fast (like Bump only better). As with any new technology implemented on the iPhone, developers will jump on NFC like a pack of wolves and create amazing social games and helpful utilities that we haven’t even dreamed up yet.

Conclusion

Will Near Field Communication technology be present in the iPhone 5? I honestly have no idea. You can safely bet though that Apple is indeed looking into it. Several speculators have pointed out that if and when iPhones are used in everyday purchases, suddenly Apple is conveniently positioned to earn a small chunk off of a huge portion of transactions all over the globe; from cheeseburgers to toothbrushes. Do you think Apple could resist such a tempting future?

Leave a comment below and tell us what you think of NFC. Will it really change the world as much as innovators and early adopters are promising? Better yet, do you think we will we see NFC in the iPhone 5 later this year?

Photo Credits: Yutaka Tsutano and Sevenfloorsdown.

Turn Your iPhone Into a Powerful File Manager with Berokyo

Managing files on your iPhone can be a pain. iOS includes file viewers for most common file types, and with a few 3rd party apps you can easily edit many common office documents and other files you might receive in emails. You can even view or download any file in your Dropbox or SpiderOak accounts with their respective iPhone apps. The problem is, every app manages its own files, and there’s no built-in file explorer to let you save files and access them from any app.

Enter Berokyo. Berokyo is a powerful app that lets you manage files and organize them into folders, right on your iPhone or iPad. You can import files from many apps, then open files saved in Berokyo in other apps. It’s also fully integrated with Dropbox, so if you store most of your files in the cloud you’ll be able to use them from your iPhone easier than ever. In essence, it is the closest thing you can get to Finder or Explorer in iOS. Let’s dive in and see how Berokyo can make your mobile computing life easier in iOS.

Setting Up Berokyo

Berokyo uses a unique bookshelf interface to help you manage files and folders from Dropbox, iTunes, or files already stored on your device. When you first launch the app, you’ll need to add a new bookshelf to start organizing files.

Tap the button on the bottom, then choose to create a new synced contacts, documents, or Dropbox bookshelf, or create a new empty bookshelf that simply stores files in Berokyo. The Contacts bookshelf will show all of your contacts from your iOS Contacts app, while the Documents bookshelf lets you import files directly from iTunes on your computer.

Berokyo brings file management to iOS

The Dropbox shelf, as you would expect, lets you see all of the files and folders from your Dropbox account. You’ll need to first signin with your Dropbox account, and seconds later you’ll see all of your Dropbox folders and files appear in Berokyo shelves.

All folders use the same default icons you’d see in OS X’s Finder; shared folders show 3 pereson silhouettes, the public folder shows a globe, and Music and Pictures folders show a music note and a camera, respectively. You can now browse your Dropbox, open files, and upload any file you have saved in Berokyo, and can even view files and folders you’ve already opened when you’re offline.

Add your Dropbox to browse folders offline

Importing Files

If you added a Documents shelf, then you’ll be able to add files and browse those stored on the shelf right from your Mac or PC in iTunes. Make sure to add the Documents shelf, then the next time you sync your iPhone with iTunes you’ll see a Berokyo listing in the File Sharing section of your iTunes sync settings. Now you can copy any file back and forth between your device and your computer without worrying about what iOS app you need to sync it with. Once it’s in Berokyo, you can open the file in any compatible app on your device!

Add or edit files from your computer with iTunes Sync

Right on your iPhone, you can add files to Berokyo from any app that can send files to another app. This worked great with images, common office files, PDFs and ePub files, and more in our tests. Next time you get an email attachment, or want to move a file out of Documents to Go, Evernote, or other apps, you can select Berokyo as the app to open the file. Then, Berokyo will ask you to select where you want to store the file, and it will be saved for you to open anytime later in any app.

Importing files from other apps is one of the best features

Putting Berokyo to Work

Now that you’ve got your files stored in bookshelves in Berokyo, it’s time to put them to work. You can quickly find any file or folder you want from the search bar on the top, and the files and folders that don’t fit your search will disappear, rearranging to show only those that include your query. The only problem is, search only works in the folder you have open, so you can’t search through your entire Dropbox for file stored in folders.

If you need to get to files in folders, double-tap on the folder to open it. Then, tap on individual files to open, view, or email them. You can also see some quick info about files, including its size and the last time it was modified, just as you could in the file explorer on your computer. Or, if you need to switch to another bookshelf, just swipe left or right. This way, no matter if your files are saved in Dropbox or stored in the Documents shelf, you’ll always be able to access them and open them in your favorite app.

Find files fast, then preview, email, or open them in another app

You can also customize your Berokyo interface. Tap the color palette icon on the bottom to select from a variety of textures and colors for your bookshelves, including everything from cork to brushed metal. You can also remove files from your device, hide file names, or edit existing files and folders from the other options on the bottom toolbar.

With a variety of colors and styles, there's a Berokyo for everyone

Upload Files to Dropbox Easier Than Ever

One of my favorite features in Berokyo is that you can upload multiple files, pictures, or videos to Dropbox at once. Just tap the plus button to add a new Bookshelf or folder, or tap Add Items to import the files you want. Now, you can select to add photos and videos from your photo roll, or select Documents to add files from your Documents shelf.

Add new files and folders, or create a new bookshelf to organize your files

Tap each of the files that you want to upload to your Dropbox shelf, and you’ll see a small notification letting you know that the photo or file has been added. Once you’re done, you can go back to your shelf  to see your files being uploaded to your Dropbox. You’ll see a blue progress bar as the file is uploaded, then the standard Dropbox check mark will show files that are safely stored online. This is much easier than uploading photos individually through the Dropbox app, and plus, with the Documents folder, you can now add any other file to Dropbox that you exported from an email attachment or another app. Suddenly, your files aren’t trapped in iOS any more!

Upload multiple files to your Dropbox at once

Tweak Your Settings

Not only does Berokyo let you use your files like you want, it also lets you use the app itself as you want. Simply tap the gear icon on the top to customize tons of things about the app’s interface. You can customize the spacing between files and folders, choose to display file extensions, open folders with one tap, tweak the folder open animation, and more. Between the color customizations and the settings you can tweak here, you can make Berokyo work exactly like you want.

Tweak your settings so Berokyo works just like you want

Conclusion

In short, we’re very impressed with Berokyo. It makes managing files and using them in any app you need actually possible without jailbreaking your iPhone. Plus, it’s a universal app, and is even more useful on iPad with its larger screen and greater potential for productivity.

I’ve begun using Berokyo as my default way to use Dropbox from iOS on the go, and it’s worked great all the way. If you’ve been frustrated with the limited ability to move files around in iOS, be sure to give Berokyo a try. It just might be what you’ve been waiting for!

Quick Look: PhotoTangler

Quick Look posts are paid submissions offering only a brief overview of an app. Vote in the polls below if you think this app is worth an in-depth AppStorm review!

In this Quick Look, we’re highlighting PhotoTangler. The developer describes PhotoTangler as a simple yet powerful tool for turning your favorite photos into beautiful collages. Simply import your images or add text captions, and PhotoTangler’s unique blending system instantly merges them together without seams.

With a simple multi-touch interface and immediate results, creating high quality collages with PhotoTangler is a snap!

Read on for more information and screenshots!

Screenshots

screenshot

PhotoTangler

About the App

Here are the top five features you can expect to see in the latest version:

  • Easy and fun to use
  • Unique image blending, with instant results
  • Manipulate photos using multi-touch
  • Add text captions
  • Save results to your phone

Requirements: iPhone (or iPod Touch) with iOS 3.1 or higher
Price: $1.99
Developer: Solid Eight Studios

Vote for a Review

Would you like to see us write a full review of PhotoTangler? Have your say in our poll:

Would you like to see PhotoTangler reviewed in-depth on AppStorm?customer surveys

Quick Look posts are paid submissions offering only a brief overview of an app. Vote in the poll if you think this app is worth an in-depth AppStorm review! If you’re a developer and would like to have your app profiled, you can submit it here.

10 Gorgeous iPhone Apps for Making Your Own Ringtones

Certain categories in the App Store stand out not only for their functionality but for the beautiful design trends that you tend to see within them. Custom ringtone apps are definitely just such a category and several of these apps have absolutely gorgeous interfaces.

Though there are tons and tons of ringtone makers available, today we’re focusing only on the top tier of attractively-designed applications. Each of these apps comes in at less than a buck and all offer their own spin on giving you the ability to build custom ringtones from the music on your phone or even audio that you record yourself.

How Do They Work?

Though they offer different creation methods, each of these apps is forced to follow the same system for installing the ringtones. Since developers don’t have direct access to the iPhone ringtone directory, these apps place saved ringtones in the iTunes file-sharing tab that appears when your phone is connected via USB.

From here you simply save out the ringtone file to somewhere on your computer, then drag it back into the Ringtones section of iTunes. After this you can sync your phone to see the ringtones appear.

This multi-step process is definitely a hassle, and some developers try to make it simpler with email and Dropbox integration, but there’s really no way currently to create an app that can do it all in a single step.

If you prefer making ringtones on your Mac, our friends at Mac.AppStorm recently published an article comparing 4 great ringtone apps for Mac.

Ringtone Maker Pro

“You can change the playback speed and sound pitch to make funny ringtones! Convert a male artist’s sound into female or vice versa! Turn country music into club dance by accelerating the speed!”

As you can see, Ringtone Maker Pro gives you a ton of freedom to really customize your ringtones in a number of unique ways. The interface is a nice dark texture with blue glowing highlights and realistic sliders.

Price: $0.99

screenshot

Ringtone Maker Pro

Ringtone Designer Pro

“Simply select a song you’d like to use as a ringtone, swipe the audio wave to select a short clip, and create your ringtone. It’s that easy!”

Ringtone Designer Pro has one of my favorite interfaces on the list. If you’re creating a ringtone from your music library, you simply drag the sliders on the waveform to easily select the portion you want. Alternatively, if you’re recording your own, there’s only a big record button and a speaker. Ringtone apps are usually quite cluttered but this one is a great mix of useful and simple controls.

Price: $0.99

screenshot

Ringtone Designer Pro

Ringtone Maker Pro (by Mobile17)

“Based on technology from our award-winning web service, you’ll choose from both popular edits generated by users online and options to drag’n’drop fine-tuned editing controls for making your own ringtones in just seconds!”

If you’re not a fan of the dark blues and blacks of the previous two apps, this one breaks the trend with a much lighter interface. It’s as simple as dragging the slider to set the start time and choosing your duration. The awesome and unique feature here is the ability to see what start times others have chosen for the same song!

Price: $0.99

screenshot

Ringtone Maker Pro (by Mobile17)

Create Ringtones!

“Are you tired of hearing the same ringtones over and over again? With Create Ringtones! you can create unlimited amount of custom ringtones with ease! Use your iPod music or Record your own!”

If you liked the Ringtone Designer Pro interface but want some more advanced controls, check out Create Ringtones. In fact, this may be the best app on the list. The design is beautiful, the feature set is powerful and best of all, it’s free! You can bet that this one has a permanent spot on my iPhone.

Price: Free

screenshot

Create Ringtones!

Ringtone HD

“In addition to converting songs from your iPod library into ringtones, Ringtone HD features in-App Voice Recording which lets you convert live audio into ringtones. This feature lets you create and assign individual voices as ringtones to the calling number of the person calling you in your contact list!”

Wavelengths are pretty and make a lot of sense to audiophiles, but many people might find a simple timeline a lot more useful. Ringtone HD allows you to quickly set the beginning and end time so you can grab just the right snippet of the song that you want.

Price: $0.99

screenshot

Ringtone HD

DIY Ringtones

“The most dedicated and professional ringtone maker. Maintain the original quality of music during conversion, without any compression or attenuation.”

The built-in UI controls are awesome on this app and as a bonus you can set your own background images to really personalize the experience. You also have full control over both the speed and the fade of every ringtone you create.

Price: $0.99

screenshot

DIY Ringtones

Dring ~ Beautiful ringtone creation

“Dring offers a gorgeous handcrafted interface to customize and create your own ringtones directly on your iPhone. You can of course select the song of your choice or use the microphone feature to create your own recordings. But what about adding some extra fun to the whole process? Well, thanks to Dring, you can now enjoy our exclusive Remix feature to literally mix both of them in a single ringtone!”

If you’re a designer, you simply can’t help but appreciate the beauty that is the Dring interface. The pixel-perfect art nails that sweet spot between realistic and cartoony. It’s also one of the only apps out there that lets you combine a music track with recorded audio.

Price: $0.99

screenshot

Dring ~ Beautiful ringtone creation

Ringtone Wizard Pro

“Extreme precision: trim your songs with 0.1 second accuracy to create perfect ringtones! Customize ringtone duration from 6 to 40 seconds and ringtone volume from 50% to 200%! Boost the volume of songs to make sure you will hear your phone ringing in any environment.”

This one is eerily similar Ringtone Maker Pro in just about every way possible. I’m not sure which came first but this one looks a little more professional as it doesn’t have the cartoon characters near the bottom.

Price: $0.99

screenshot

Ringtone Wizard Pro

Mega Ringtone

“You can make ringtones based on your favorite songs from your iPod library or record sounds using the built-in microphone. Maximum length of ringtone 40 seconds. Fade-In, Fade-Out sound effects included.”

Another free app that uses the popular waveform control scheme. This one implements a brighter, more intense color palette that’s really eye catching.

Price: Free

screenshot

Mega Ringtone

Ringtone Remix Pro (with Dropbox support)

“You’ve got the best phone – why settle for the same boring ringtones? Now you can use your favorite music tracks to make free ringtones and calendar alert tones in seconds – Ringtone Remix makes personal ringtone creation more fun and, with our unique Dropbox support, easier than ever before!”

Though the waveform is dark and high-contrast, the rest of the UI is nice and light with subtle gradients and realistic shadows. The awesome Dropbox support feature allows you to wirelessly transfer finished ringtones to your computer.

Price: $0.99

screenshot

Ringtone Remix Pro (with Dropbox support)

Which Is Your Favorite?

All of the apps above were designed by extremely talented developers and Photoshop wizards. Collectively they represent the most functional and attractive group of ringtone apps you’ll find just about anywhere.

Leave a comment below and let us know which was your favorite. I personally love the value of the free “Create Ringtones!” app and the unbeatable design of “Dring”.

Winners Announced: Win One of Five Copies of OffMaps 2 for iPhone!

We’re happy to announce that we’ve randomly chosen our five winners, each of whom will receive a free copy of OffMaps 2 for iPhone and a voucher for 5 extra map downloads!

If you’re one of the lucky five listed below, stay tuned, you should be receiving an email with more details soon!

Have you ever wanted to access interactive map data on your iPhone in an offline setting? Whether you’re traveling the world or in your own backyard, OffMaps 2 gives you the awesome ability to download and store maps and data from cities all over the globe.

Because you’re an awesome AppStorm reader, today you’ll get the chance to get this amazing app completely free! Read on for more information on how to enter.

OffMaps 2 Main Screen

The main screen of OffMaps 2 allows you to access all of the maps that you've downloaded.

How To Enter

Today we’re pleased to announce that we have five OffMaps 2 promo codes to give away! As an added bonus, each winner will receive a voucher 5 extra map downloads. In case you’re wondering, that’s an awesome deal!

To enter, simply follow us on Twitter and leave a comment on this post with your username. We’ll choose the four winners at random one week from today. Good luck!

Level Up Your Real Life Productivity with the EpicWin Game

Has your spouse been bugging you for the last week about taking out the trash? Can’t remember the last time you clipped your toenails? Keep forgetting to mail off that important form?

Sounds like you’ve got a case of procrastination, and you might need some help getting out of your chair. If self-motivation isn’t your strong suit, EpicWin is here to help. The developers’ goal: to make it fun enough to get things done that you don’t procrastinate.


EpicWin is a lot like a regular task manager, only with a role-playing game built around it. You create a character, complete quests, earn experience and loot, and walk away from the washing machine with much bigger biceps* thanks to all those stamina points you’ve earned.

*Bigger ego is probably more accurate. Any muscle growth experienced as a result of completing quests is imaginary.

So how do you go from regular peasant to stalwart dwarven chore-master? Keep reading as our hero Flobgoblin defeats the greatest threats in all of Choredom.

Creating Your Character

The character creation process is a simple one, and unlike most real games, the choices you make at the start are purely aesthetic. While the choices you make here won’t make any practical difference, it does seem like the only way to start afresh is by removing and reinstalling the app, so choose an avatar you’ll be happy to look at as you go about your day!

The Character Creation Screen

The Character Creation Screen

Type in your name, pick an avatar, and you’re ready to begin.

Creating & Completing Quests

In EpicWin, tasks are called quests. On the app’s main screen, you can view, complete and search your quests, and tap the pencil icon to create a new one. To complete a quest, tap and hold the circled number to the left of the quest description. The quest will burst into a shower of stars to let you know it’s been marked as completed–or in EpicWin vernacular, beaten–and you’ll receive gold and attribute points.

When you first install EpicWin and create a character, there are several tutorial tasks that explain various parts of the app as you complete them so that you’re quickly up to speed.

The Task List & Task Creation Screen

The Task List & Task Creation Screen

When you’re creating a new quest, you’re given many of the options that serious task managers possess–the ability to set a due date and an alarm, set a scheduled frequency for repeating tasks, and you can even link the task to one of your iCal or Google Calendar calendars.

After setting those, you’ll notice some more obscure features. Set the ‘epicness’ based on the significance of the quest, and you’ll be rewarded accordingly. Checking the letterbox, for example, is the kind of thing you’d want to set to the minimum epicness of 50, while completing a big project would be better suited at the high end of 300.

You’ll also want to decide on an attribute for your quest. You can pick one attribute from Strength, Stamina, Intellect, Social and Spirit. Use your best judgement to theme your quest. I like to make doing the dishes a feat of stamina, the evil job that tests the limits of my will. Writing a review of some gimmicky iPhone application might be a feat of Intellect.

EpicWin doesn’t have all the task creation and organization features that a hardcore GTD follower would want to see, but for the fun, light nature of the application it’s surprisingly versatile.

Progressing Your Character

As you progress your character by finishing quests, you’ll occasionally earn loot. The loot doesn’t actually do anything, so it’s more akin to earning an achievement in a regular game. You can share your loot on Twitter and Facebook if you’re the kind of person who sends Mafia Wars spam to your friends, and see what you were awarded the loot for.

The Loot & Progress Map Screens

The Loot & Progress Map Screens

As you complete quests, your character is moved along a map. You can scroll down the map to see a history of your loot, and the total gold collected and miles travelled is tallied on the page as well. Unfortunately, after reinstalling the app the loot icons on the map are bugged out and show a white square.

After you’ve completed a bunch of quests, you’ll have gained enough experience to level up. When you do, the app makes sure you don’t miss the occasion:

You've leveled up!

You've leveled up!

Your Profile

You can check your character’s profile to see how many attribute points they have and how close to earning the next point they are. Like many features of EpicWin, there’s no significant ramifications for having more of one stat over another, but if you’ve used a system to determine what sort of quests reward certain attributes you’ll be able to get a rough overview of where you spend your time.

At the bottom of the profile you can also see your level and how much experience you have until you level up again, keeping you motivated to peck away at your task list.

Your Character Profile

Your Character Profile

Conclusion

There’s no doubt that EpicWin is a fun approach to something that’s usually pretty dry. The developers have created a great game-like interface with an awesome soundtrack (which may get annoying after a while).

For an app of its kind, EpicWin is pretty full-featured in the task management department. Scheduling, alarms, and calendar syncing are all essential basics. Productivity nerds will find that the app falls short of their needs–there are no contexts or projects, no way to assign tasks to others and no interface through which to access your tasks via the desktop or web.

But it’s not really meant to be that kind of task manager, either, so I can’t fault it for that. I wouldn’t recommend the developers focus on adding features to that aspect of the application. What I would recommend is that they improve the gameplay aspect, adding meaning to attributes and loot, and perhaps including a social element. People are addicted to games like World of Warcraft not just because their character advances, but because when they do gain a level or equip a new piece of loot it has an impact on the gameplay and their interactions with others.

As it stands, the app is more of a gimmick that might motivate you to complete tasks while you’re testing it out, but once the novelty of flashy screens and useless loot wears off, it’s less likely to provide a motivating factor.

If you don’t need a heavy duty productivity app, EpicWin is as good or better than any of the lighter alternatives, and brings some fun to the process. It’s definitely worth a look, and the gameplay component has potential for the future.

Jelli: Radio Meets Democracy

Those of us who aren’t living in a country lucky enough to have Spotify are still on the lookout for the ideal streaming radio app. Most services that let you have any say in the songs that play charge you a monthly fee. Others, like Pandora, merely let you guide the stream in a vague direction based on your personal interests.

Jelli is a new player in this category with a novel idea: vote-driven live radio. Keep reading to see what exactly this is, how it works and whether you should try it.

Tuning In

When you first launch the app you’ll be asked to sign up for the Jelli service. Like the app, this is completely free and you may be already signed up if you’re familiar with the Jelli web service.

After you sign up, you’ll be taken to a horizontal menu of stations. Unfortunately, you don’t have many options to choose from. I was given thirteen stations ranging from classic rock to country, some even had no set genre and were free to play anything.

screenshot

The Jelli station tuner

As you can see, the station preview shows you what’s currently playing. Tapping on the little information icon in the lower right of a station preview will show you the last four songs streamed to further help you get a feel for the personality of that particular choice.

Voting and Listening

Once you choose a station, tap on the play button to begin streaming the current song. From here you can get a glimpse of the song name and album art, contribute to the Rockometer (more on that later) or tap “Vote” to see a list of other songs.

screenshot

Current song (left) and the song poll (right)

Here comes the interesting part, the list of songs you see above isn’t so much a queue as a poll. Users currently listening to Jelli decide what song will be played next by scrolling through the list and voting for their favorites.

Songs are then ranked by their score and the song with the most votes will be played next. Every time a new song starts, you get a new opportunity to cast your votes and influence the order.

Searching

Jelli doesn’t limit you to the songs currently shown on the charts. You can use the integrated search feature to find specific artists and/or songs that you want to start voting up for future play.

screenshot

You can search and browse by artist or song

The Rockometer

The fun doesn’t end with simple yes or no votes. There are other layers added to the “game” to make it more interesting. One of these layers is the “Rockometer”, which allows users to voice their opinions about the currently playing song by tapping the thumbs down or horns gesture.

screenshot

You tell Jelli whether the current song sucks or rocks.

The little meter above the hand icons shows the current state of the Rockometer, in other words, what listeners think of the currently playing song. If the Rockometer gets too far towards the “Sucks” side, the song is immediately pulled and the next highest ranked song begins.

Rockets and Bombs

In addition to the Rockometer, each user gets a limited number of Rockets and Bombs, each of which has a unique outcome. The bomb is simple, throw it and it destroys a song’s score enough to plummet it to the bottom of the list, which greatly reduces the likelihood of it getting played.

screenshot

Rockets and Bombs give you more voting power

The Rocket is a little more unique. Rocketing a song boosts it up in the rankings, but not necessarily all the way to the top. If the community likes your rocketed song enough that it gets played, you get credit for it.

When I successfully rocketed a Blind Melon song to the top, there was an audible announcement about how a new user had submitted the song and my user name appeared next to the song as it played.

Will My Songs Really Get Played?

Jelly presents a really interesting way to listen to music. It’s like crowd sourcing a DJ position. The app makes good on its promise of content that is truly controlled by the users. The application might guide the content to a degree, but user votes have the ultimate say.

At this point you’re no doubt wondering how much one person can really affect the outcome of a station. Fortunately, it seems that you can currently influence it quite a bit! The active Jelli community is small enough that, in my testing, most of the high-ranking songs only had around three votes. This means that my one vote had a significant effect on the rankings.

As I listened, I genuinely felt like I had a voice in what was being played. Songs that I voted for were frequently played and I even successfully rocketed a song to the top as we saw above.

Closing Thoughts

Overall, I really enjoyed using Jelli. It’s an innovative idea and I think there’s a lot more room for this kind of thinking in the area of radio.

However, my impression of the app wasn’t all positive. For one thing, the interface really turned me off. For whatever reason, it just didn’t resonate with me and often felt cluttered. I would honestly love to see it completely redesigned from the ground up so that it’s more subtly styled like Rdio.

Also, as I stated before, there were very few stations to choose from. This might not be so bad if the stations were defined a bit better and organized in a new way, but the current system is vague and leaves you guessing.

The bottom line though is that it’s a free app that genuinely provides a cool new way to interact with streaming music. There’s definitely no reason not to download Jelli and let us know what you think!

Project Noah: Discover and Share Nature From Your iPhone

Smartphones and apps are accused of making us less social and more glued to screens than ever before. Most of us argue that apps help our lives, but in all honesty, most of us should spend a lot more time outdoors than we really do. So the question is, “can an iPhone app can inspire you to get out and explore the real world around you more?”

Project Noah just might be the solution. This award-winning app makes it easy to discover the wildlife right around you and share your own wildlife discoveries with the world. Whether it’s a deer in the woods, a snake in your garage, or that tree around the corner that you’ve always wondered about, we all have wildlife around us that we’d love to share with the world. Project Noah inspires you to find out what’s living around you to help both you and others learn more about our planet. Before we put on our hiking boots and hit the trail, let’s take a closer look.

Create An Account

The first thing you’ll notice when you download the app is its absolutely gorgeous icon and interface. It looks like a miniature field guide complete with taped-in pictures and cloth scout-style badges. We’re constantly amazed at the beautiful interfaces iPhone app designers create, and Project Noah takes this to a whole new level. Becoming a naturalist has never looked so easy or inviting!

If you’ve never used Project Noah, it’s easy to get started. You don’t have to make a new account; just sign in with your existing Google, Facebook, Twitter, Aol, Yahoo!, or Windows Live account. Project Noah will then import your name and avatar so you can start sharing wildlife without remembering yet another password.

Project Noah's gorgeous interface

Join Missions

The second option along the bottom lets you discover missions, which are organized groups looking for certain types of wildlife. From Birds of the World to The Color Red, there’s something that’s being discovered and categorized that will appeal to anyone. You can scroll through all of the global missions or find those close to you. Tap a mission to learn more about it, and if you’d like to contribute photos and info to this group, tap Join Mission. This is a great way to get ideas of what others are finding and get inspired to find wildlife of your own.

Discover and join missions to help catalog wildlife

Discover Wildlife Around You

The Field Guide is one of the more interesting sections. It will show you wildlife that has been spotted near you. You can help add info to plant and animal listings you recognize, or just see if anyone else has spotted that same black bear that keeps invading your back yard. Want to see a specific animal near you? Just enter it in the search box on the top left.

Find wildlife being spotted right around you

You can also sort the Field Guide listings by category as well, which is a fun way to see the types of wildlife around you. Rotate the category wheel to select from a variety of categories, each with a stylish icon of the animal. The category selector is amazingly detailed, and is the best showcase of Project Noah app’s design. Once the category you want is highlighted, tap the center Go button to view just those types of animals.

The category selector's artwork detail is incredible!

Share Wildlife You Discover

Ready to share your own wildlife discoveries with the world? Head back to the main My Noah page, and select New Spotting to add a photo of a new plant or animal you’ve found. You can take the picture right then, or select a picture you’ve already taken. For animal shots, it’s often easier to add one that you’ve already taken to make sure it doesn’t get away before you can open the app and take a shot. Either way, scale and crop the image to size when you’re done, then select the category of wildlife you’re adding.

Project Noah did crash on us the first couple times we tried to add new discoveries. If you have the same problem, try restarting your device – that cleared up the problems.

Scale and crop your image, then select a category for it

Then, you can add the location of the spotting. If you’re adding a picture right after taking it, then your current location will likely be correct. Otherwise, you can search for the location in the search box, and drag the pin to the correct spot on the map. Your new wildlife spotting is now ready to submit, though you can add some more info to your post first if you like. Alternatively, slide the Help me ID this species slider if you’re not sure what the animal or plant is, and others can help you identify it.

Mark the location you spotted the animal or plant in the photo

There’s tons of information you can add to your post, including the common and scientific name, description, habitat, and notes about this particular shot. You can also add tags to your post to make it easy for others to discover. Choose from commonly used tags, or add new ones related to your post. Then, don’t forget to add your shot to a mission if you’ve joined a relevant one. For example, I added my photo to the Birds of the World mission.

One of my favorite features is the ability to set the Date Spotted on any new shots you add. So, if you have some pictures you’ve already taken of animals or plants that you’d like to share or let others help you identify, you add them as a new spotting. Then, you set the date back to the day you took the picture and perhaps add a note about when you took the picture and why you’re adding it now.

You can add older photos, too, and still set their correct date

After you’ve added all your information, your new spotting post will contain plenty of data to let others learn from your shot or help you figure out what animal it is. You can go back to your posts from the My Spottings button on the home page, where you’ll see any updates that have been added to your posts.

View all of the wildlife you've spotted and see updates others added

Sharing Your Findings

Project Noah is not just an iPhone app; it’s also available for Android devices and as a webapp that can be used from any computer. You can follow other users to keep up with the animals they’ve spotted, and can also earn patches for your achievements and discoveries. It’s like Foursquare mixed with Instagram, redesigned for wildlife!

Plus, you can tie it into your other social networks such as Twitter or Facebook. Whether your friends are using Project Noah on their iPhone, or just check your Facebook page from their PC, they’ll be able to keep up with the new nature discoveries you’re making. Just open your profile and activate Twitter and/or Facebook sharing if you want to share your findings with your other networks.

Gain patches and share your findings with the world

Conclusion

Project Noah’s mission is to “encourage people to reconnect with nature and document local wildlife,” and they’ve definitely succeeded with that! The app is intricately designed and makes it fun to document the wildlife you’ve discovered and find other organisms that are being discovered nearby.

So go grab your iPhone or iPod Touch, download this free app, get outdoors, and find something new to document! It’s a great excuse to get away from your office and use your iPhone to learn more about the world around you!.

Weekly Poll: How Serious Is Your App Addiction?

With the iTunes Store now containing well over 300,000 apps and growing at unprecedented rates, the iPhone has become the source of a fairly new type of serious psychological condition: App Addiction. We here at iPhone.AppStorm are full-blown app addicts and proudly download and test every new toy we can get our hands on.

Today we want to gauge your level of app addiction with a simple poll that asks how many apps you download per week (not counting standard updates). Are you a casual downloader or an obsessive app-crazed lunatic!?

After voting in the poll, leave a comment and let us know how many of these are paid apps and how many are free. Do you stick to free downloads or are you spending serious amounts of cash to build up the ever-growing kingdom of Apple?

iPhone Game Friday: New Releases

Since we’ve featured a good number of premium titles over the past few weeks, we figured it’d be nice to lighten the load on your wallets a bit and showcase some of the recent free titles that have impressed us.

This week’s picks are therefore completely free, so you’ve got nothing to lose by checking them out. And if you think free games aren’t as fun as paid ones…think again!

Overkill

Overkill

Overkill

When it comes to amazing amounts of content given for free, Craneballs Studios seem to be looking for a medal to win. Their new shooter, Overkill, is a beautiful and vastly entertaining time waster with an incredible amount of unlockable material.

The game is essentially an on-rails shooter without the rails, where you must defeat waves of enemies from your fixed position. Doing so earns you money and Overkill Medals, which are the in-game currency used to unlock more environments, upgrade your weapons, buy more ammo for them, and more. As you progress, you’ll get promoted through 30 ranks, and encounter tougher enemies including nasty flying drones that are a pain to take down.

The graphics are lean and impressive, but what really makes Overkill stand out is how satisfying it is. You can play for short spurts and get a great action gaming experience without shelling out big money. It’s also very kind about rewarding you: more than 80 achievements can be unlocked, and although you can speed up your upgrading by buying OM via in-app purchase, there are also more ways to earn them, including standard play, email/Facebook referrals, and TAPJOY. There’s lots to love in this package, so if you like shooters then grab it and enjoy!

Price: Free
Developer: Craneballs Studios
Download: App Store

[

Zombie Revolution

Zombie Revolution

Zombie Revolution

Amid the zombie craze, it’s not often that we get to assume the role of the opposite side, so Zombie Revolution brings the premise a neat refresh since you play as the zombies instead of us humans.

As the leader of the zombie revolution, you must muster your forces and attack the annoying humans on the opposite side of the river. Why? Because brains. Actually, it’s because they’re putting flowery stuff in your water and zombies prefer dirty things. Who knew? Gameplay consists of building structures in your town and training zombies, researching upgrades, etc. and then attacking new sections of the map with your newly created forces.

There are 6 zombie types that you can mutate your warriors into, and 4 different types of humans to kill with them. For folks who want a more patient take on the zombie story with the roles reversed, Zombie Revolution has a lot to offer, especially for the fine price of free.

Price: Free
Developer: Digital Chocolate, Inc.
Download: App Store

DJ Rivals

DJ Rivals

DJ Rivals

In the unusual category, DJ Rivals offers a fresh and fun story that puts you in the stylish shoes of a DJ trying to save Nightclub City from the evil Bland Corporation. It’s an RPG at heart, but the battles are replaced with DJ-style mini-games that range from Guitar Hero beat tapping to scratching and more.

The story is told through excellent cinematics, and one of the neatest features is the ability to enable location services to battle at “real” places in your neighbourhood. Despite the MMO and RPG tendencies though, it’s clearly the rhythm game aspects that are the most emphasized, and with good reason since they’re fun, well polished, and appropriate for the story.

With 50 moves, 50 collectibles, and 9 bosses to defeat, you’ll have your hands full for a while with this one. Check it out if you like your rhythm games with a bit of brain and progression.

Price: Free
Developer: Booyah, Inc.
Download: App Store

KartRider Rush

KartRider Rush

KartRider Rush

If you’re one of the more than 230 million (!!) players familiar with KartRider in its online form, then you hardly need an introduction here. If you’re not among those folks, KartRider is essentially like Mario Kart except online and, obviously, now on the iOS platform. This platform change seems to have happened to replace the American online version of the game which disappeared in 2008.

Regardless, KartRider Rush is a cheerful and energetic racing game with cartoony visuals, catchy music, and very simple controls. You tilt to steer, and there’s a button for braking and for drifting (sliding around corners to gain a speed boost). Acceleration happens automatically, which means you can focus on driving and on dealing with your opponents. In the game’s Speed Mode, your goal is to drift as much as possible to collect nitro and get ahead, but the Item Mode is where things get really familiar: you’ll be collecting and using special items to impede and attack your fellow racers, just like in Mario Kart.

There are very few other games out there that capture the spirit of kart racing as nicely as KartRider Rush on the iOS, and the fact that you can enjoy this bit of nostalgic gaming for free makes for an excellent deal.

Price: Free
Developer: NEXON MOBILE
Download: App Store

Squidy

Squidy

Squidy

Our final pick is an adorable little puzzle game that asks the question: if you were a squid living in a canyon, what would you do to return to your aquarium? If you answered “detonate impressive amounts of dynamite under in my vicinity to launch myself in the direction I need to go” then you have just found yourself the perfect game.

Having spoiled the premise for you, all that’s left to say is that while the physics sometimes feel a bit too forgiving, the art design is beautiful and the gameplay itself is fun and addictive. The challenge ramps up nicely and although there are only 25 levels for now, more are promised in an upcoming update so there’s lots to look forward to.

Price: Free
Developer: Karma World LLC
Download: App Store

What Have You Been Playing?

There you have it: five great little games for zero dollars each! If you’re spending that cash on other important endeavours or if you’ve enjoyed one of these games (or a different one) then let us know in the comments!

Quick Look: Stereolizer

Quick Look posts are paid submissions offering only a brief overview of an app. Vote in the polls below if you think this app is worth an in-depth AppStorm review!

In this Quick Look, we’re highlighting Stereolizer. The developer describes Stereolizer as an app that turns your iPad into a 80′s stereo.

Read on for more information and screenshots!

Screenshots

screenshot

Stereolizer

About the App

Here are the top five features you can expect to see in the latest version:

  • Tuner with free access to 10000+ radios
  • Unlimited recordings (music, radio shows, …) with a vintage tape recorder
  • Play, Pause, fast-forward, rewind, … all the famous 80′s hi-fi buttons
  • Eject the tape to view, edit and delete the recordings
  • Facebook and Twitter sharing

Requirements: iOS 4.0
Price: $1.99
Developer: Lesmobilizers

Vote for a Review

Would you like to see us write a full review of Stereolizer? Have your say in our poll:

Would you like to see Stereolizer reviewed in-depth on AppStorm?online survey

Quick Look posts are paid submissions offering only a brief overview of an app. Vote in the poll if you think this app is worth an in-depth AppStorm review! If you’re a developer and would like to have your app profiled, you can submit it here.

Facebook SDK – Posting to User News Feed

What the Posts will look like!


Hello, I’m Andy Yanok (Twitter) and I recently finished working on Friended for Facebook.  Many applications use Facebook for posting content from their respective applications, there could be infinite items that a developer would like to post to users feeds whilst using their applications but today we will be focusing on posting a link to a users feed.

In order to get started using the Facebook SDK & API’s you will need to download the latest copy of the Facebook SDK for iOS.  For further reference to using the Graph and FQL API’s you can refer to Facebook’s API documentation.  As I am sure you are used to using the great documentation provided by Apple for developing your iOS applications, but you may find the Facebook API documentation to not be so great.

In order to integrate Facebook into your app you will need to create an application on www.facebook.com/developers.  After creating the application you will be provided with keys needed for accessing the API’s. There are some nice features to integrating Facebook into your application such as seeing how many people “Like” your application, and statistics about the usage of your application.

In this tutorial we will be creating a simple Facebook news feed posting application with the following features/functionality.

  • Facebook API / SDK Request Wrapper
  • News feed post class
  • Simple UI to test the code

Getting Started:

Before you can begin writing code there are a few setup steps you will need to perform to setup access to the Facebook API.

First you will need to logon to www.facebook.com/developers, and create an application.  For this tutorial you can use the keys provided in the sample project. Once you have created an application the developer page Facebook will provide you with the keys needed .

Secondly, you will need to download the source for the Facebook SDK https://github.com/facebook/facebook-ios-sdk.  You may also pull the SDK source out of the sample project provided.  Included with the Facebook SDK are JSON parsing libraries, the Facebook SDK uses these libraries to parse the incoming data from their servers. Once this is done you can start to code!

Within your xCode project you will need to include the Facebook SDK folder and the JSON parsing Library folder.

Creating FBRequestWrapper class:
This class can be used to make GET and POST requests to the API. I like using a singleton class for this, obviously whilst writing Friended we have to make many requests and this proved to be the best method for what we needed. This is a singleton class that will handle all the requests for accessing the Facebook API.

#import "Facebook.h"

#define FB_APP_ID @"197366800287642"
#define FB_API_KEY @"3269fff9ef3b6fc13255e670ebb44c4d"
#define FB_APP_SECRET @"d038b12cc8632865952f69722fe26393"

@interface FBRequestWrapper : NSObject
{
	Facebook *facebook;
	BOOL isLoggedIn;
}

@property (nonatomic, assign) BOOL isLoggedIn;

+ (id) defaultManager;
- (void) setIsLoggedIn:(BOOL) _loggedIn;
- (void) FBSessionBegin:(id) _delegate;
- (void) FBLogout;
- (void) getFBRequestWithGraphPath:(NSString*) _path andDelegate:(id) _delegate;
- (void) sendFBRequestWithGraphPath:(NSString*) _path params:(NSMutableDictionary*) _params andDelegate:(id) _delegate;

@end

In the FBRequestWrapper.h file you will need to define the keys provided when you created your application on the Facebook Developer site.

FB_APP_ID, FB_API_KEY, FB_APP_SECRET

We will be creating two class variables, one for the Facebook SDK class, and a logged in Boolean variable which holds the status of being logged in.

Moving on to the Implementation of the FBRequestWrapper. FBSessionBegin this method is being used to instantiate the facebook object if it already has not, also will be connect the application to the Facebook SDK. Within this method we pull out the stored values for the accessToken and expiration date. These values are stored in NSUserDefaults once a user has logged in, we store these so that we will not have to repeatedly need to request these values from Facebook.

Once we have that setup, we need to specify an Array of the permissions this application will be requesting. For this application we only need the “publish_stream” permission, for more information on other permissions you can refer to the Facebook API Reference. Once we have created this array with the requested permissions we call the facebook authorize method. We are specifying the delegate passed to this wrapper class as the call back for a success or failure to login, this will be discussed in detail later.

- (void) FBSessionBegin:(id) _delegate {

	if (facebook == nil) {
		facebook = [[Facebook alloc] init];

		NSString *token = [[NSUserDefaults standardUserDefaults] objectForKey:@"access_token"];
		NSDate *exp = [[NSUserDefaults standardUserDefaults] objectForKey:@"exp_date"];

		if (token != nil && exp != nil && [token length] > 2) {
			isLoggedIn = YES;
			facebook.accessToken = token;
            facebook.expirationDate = [NSDate distantFuture];
		} 

		[facebook retain];
	}

	NSArray * permissions = [NSArray arrayWithObjects:
							 @"publish_stream",
							 nil];

	//if no session is available login
	[facebook authorize:FB_APP_ID permissions:permissions delegate:_delegate];
}

Next we need to create the method that will be passing the POST requests to the Facebook API.

// Used for publishing
- (void) sendFBRequestWithGraphPath:(NSString*) _path params:(NSMutableDictionary*) _params andDelegate:(id) _delegate {

	if (_delegate == nil)
		_delegate = self;

	if (_params != nil && _path != nil) {

		[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
		[facebook requestWithGraphPath:_path andParams:_params andHttpMethod:@"POST" andDelegate:_delegate];
	}
}

In this method we are simply doing some validation, and sending the POST request to Facebook. The delegate passed to this method will be receiving the Pass/Fail response. This method will be used for all POST requests in the future. Other methods that are in the sample project are not contained in the scope of this tutorial.

Next we need to create the FBFeedPost class which will handle posting three different types of items to the users news feed. We will start by creating an enumeration to handle the 3 different types of posts that we will be explaining. We need three different post types, FBPostTypeStatus, FBPostTypePhoto, FBPostTypeLink. Once the enumeration has been completed we will create 5 properties in the class to be used, and create a delegate for a callback with the result of posting to Facebook.

#import "FBRequestWrapper.h"

@protocol FBFeedPostDelegate;

typedef enum {
  FBPostTypeStatus = 0,
  FBPostTypePhoto = 1,
  FBPostTypeLink = 2
} FBPostType;

@interface FBFeedPost : NSObject
{
	NSString *url;
	NSString *message;
	NSString *caption;
	UIImage *image;
	FBPostType postType;

	id  delegate;
}

@property (nonatomic, assign) FBPostType postType;
@property (nonatomic, retain) NSString *url;
@property (nonatomic, retain) NSString *message;
@property (nonatomic, retain) NSString *caption;
@property (nonatomic, retain) UIImage *image;

@property (nonatomic, assign) id  delegate;

- (id) initWithLinkPath:(NSString*) _url caption:(NSString*) _caption;
- (id) initWithPostMessage:(NSString*) _message;
- (id) initWithPhoto:(UIImage*) _image name:(NSString*) _name;
- (void) publishPostWithDelegate:(id) _delegate;

@end

@protocol FBFeedPostDelegate
@required
- (void) failedToPublishPost:(FBFeedPost*) _post;
- (void) finishedPublishingPost:(FBFeedPost*) _post;
@end

This class will be specifically be used for posting three different types of posts to your news feed. In this case I have created three different initialization methods for the different posts.

- (id) initWithLinkPath:(NSString*) _url caption:(NSString*) _caption {
	self = [super init];
	if (self) {
		postType = FBPostTypeLink;
		url = [_url retain];
		caption = [_caption retain];
	}
	return self;
}

- (id) initWithPostMessage:(NSString*) _message {
	self = [super init];
	if (self) {
		postType = FBPostTypeStatus;
		message = [_message retain];
	}
	return self;
}

- (id) initWithPhoto:(UIImage*) _image name:(NSString*) _name {
	self = [super init];
	if (self) {
		postType = FBPostTypePhoto;
		image = [_image retain];
		caption = [_image retain];
	}
	return self;
}

The meat and potatoes of this class is contained within the publishPostWithDelegate method.

We pass in the delegate that will be handling the response we receive from the FBRequrestWrapper class. From there we will be checking whether we are currently logged in to Facebook, if not make the Request to login via the FBRequestWrapper. If this is the first time the application is being ran for the users login they will be prompted to allow access to post to the users feed. Once the user has allowed access for the application to access the users feed they will no longer be prompted again to allow access.

Once logged in, we determine which post type we will be sending to the users feed. Each of the three different post types require specific parameters to be passed to Facebook via a dictionary.

Once the proper parameters have been set simply call:

 [[FBRequestWrapper defaultManager] sendFBRequestWithGraphPath:graphPath params:params andDelegate:self];

Whilst making the request we will be passing the delegate of the FBRequestWrapper as self, not the previously passed in delegate for the FBFeedPost class. We do this in order to handle deallocating the FBFeedPost instance after a failure or success message has been passed back from the Facebook API.

Within the FBFeedPost class we are implementing the Facebook SDK call back methods.

- (void) publishPostWithDelegate:(id) _delegate {

	//store the delegate incase the user needs to login
	self.delegate = _delegate;

	// if the user is not currently logged in begin the session
	BOOL loggedIn = [[FBRequestWrapper defaultManager] isLoggedIn];
	if (!loggedIn) {
		[[FBRequestWrapper defaultManager] FBSessionBegin:self];
	}
	else {
		NSMutableDictionary *params = [[[NSMutableDictionary alloc] init] autorelease];

		//Need to provide POST parameters to the Facebook SDK for the specific post type
		NSString *graphPath = @"me/feed";

		switch (postType) {
			case FBPostTypeLink:
			{
				[params setObject:@"link" forKey:@"type"];
				[params setObject:self.url forKey:@"link"];
				[params setObject:self.caption forKey:@"description"];
				break;
			}
			case FBPostTypeStatus:
			{
				[params setObject:@"status" forKey:@"type"];
				[params setObject:self.message forKey:@"message"];
				break;
			}
			case FBPostTypePhoto:
			{
				graphPath = @"me/photos";
				[params setObject:self.image forKey:@"source"];
				[params setObject:self.caption forKey:@"message"];
				break;
			}
			default:
				break;
		}

		[[FBRequestWrapper defaultManager] sendFBRequestWithGraphPath:graphPath params:params andDelegate:self];
	}
}

#pragma mark -
#pragma mark FacebookSessionDelegate

- (void)fbDidLogin {
	[[FBRequestWrapper defaultManager] setIsLoggedIn:YES];

	//after the user is logged in try to publish the post
	[self publishPostWithDelegate:self.delegate];
}

- (void)fbDidNotLogin:(BOOL)cancelled {
	[[FBRequestWrapper defaultManager] setIsLoggedIn:NO];

}

#pragma mark -
#pragma mark FBRequestDelegate

- (void)request:(FBRequest *)request didFailWithError:(NSError *)error {
	[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
	NSLog(@"ResponseFailed: %@", error);

	if ([self.delegate respondsToSelector:@selector(failedToPublishPost:)])
		[self.delegate failedToPublishPost:self];
}

- (void)request:(FBRequest *)request didLoad:(id)result {
	[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
	NSLog(@"Parsed Response: %@", result);

	if ([self.delegate respondsToSelector:@selector(finishedPublishingPost:)])
		[self.delegate finishedPublishingPost:self];
}

Once either Facebook has returned a success message or failure we will call the FBFeedPost’s corresponding delegate methods with a parameter of self so we can handle the memory management necessary after we have finished posting to the users feed.

Now that this class is implemented we can easily use this class! Within the sample project you can see all three post type examples. To Post a status to your feed, all you need to implement are the FBFeedPost Delegate methods and creating the request.

- (IBAction) btnPostPress:(id) sender {

	[self.txtView resignFirstResponder];

	//we will release this object when it is finished posting
	FBFeedPost *post = [[FBFeedPost alloc] initWithPostMessage:self.txtView.text];
	[post publishPostWithDelegate:self];

	IFNNotificationDisplay *display = [[IFNNotificationDisplay alloc] init];
	display.type = NotificationDisplayTypeLoading;
	display.tag = NOTIFICATION_DISPLAY_TAG;
	[display setNotificationText:@"Posting Status..."];
	[display displayInView:self.view atCenter:CGPointMake(self.view.center.x, self.view.center.y-100.0) withInterval:0.0];
	[display release];
}

#pragma mark -
#pragma mark FBFeedPostDelegate

- (void) failedToPublishPost:(FBFeedPost*) _post {

	UIView *dv = [self.view viewWithTag:NOTIFICATION_DISPLAY_TAG];
	[dv removeFromSuperview];

	IFNNotificationDisplay *display = [[IFNNotificationDisplay alloc] init];
	display.type = NotificationDisplayTypeText;
	[display setNotificationText:@"Failed To Post"];
	[display displayInView:self.view atCenter:CGPointMake(self.view.center.x, self.view.center.y-100.0) withInterval:1.5];
	[display release];

	//release the alloc'd post
	[_post release];
}

- (void) finishedPublishingPost:(FBFeedPost*) _post {

	UIView *dv = [self.view viewWithTag:NOTIFICATION_DISPLAY_TAG];
	[dv removeFromSuperview];

	IFNNotificationDisplay *display = [[IFNNotificationDisplay alloc] init];
	display.type = NotificationDisplayTypeText;
	[display setNotificationText:@"Finished Posting"];
	[display displayInView:self.view atCenter:CGPointMake(self.view.center.x, self.view.center.y-100.0) withInterval:1.5];
	[display release];

	//release the alloc'd post
	[_post release];
}

Posting to Facebook is easy as that! You can find all the code from this tutorial in the sample project .

Using Git Versioning inside your XCode Project

This tutorial will show you how to automatically fill in CFBundleVersion and CFBundleShortVersionString, when using Git.
This has been tested in Xcode 3.2.5

Git Setup
First off you need a project that is checked into git, and is also tagged with an initial version number.

If you already have git setup for your project, skip down to XCode Setup

To locally setup up git, without a remote repository, after installing git, issue the following commands
cd into your project directory
and type “git init”
create a file in this directory called “.gitignore” and add the following lines to it

# xcode noise
build/*
*.pbxuser
*.mode1v3
xcuserdata
 
# auto git version noise
InfoPlist.h
 
# old skool
.svn
 
# osx noise
.DS_Store
profile

Then you can type:

git add *
git add .gitignore
git commit -a -m "Initial Version"

To make the first commit.

Type the following to give us our initial version tag

git tag -a "0.0.1" -m "Version 0.0.1"

When tagging, for this script to work, you should be using the form X.Y.Z, where X,Y, and Z are all numbers.

XCode Setup
Now that we have a local Git Project, or if you are already used to git and skipped to here, we can set up our project to auto generate our CFBundleVersion and CFBundleShortVersionString

Right click on Targets, and select Add -> New Target
Choose Shell Script Target
Enter a name. I chose GenGitVersion
Close the Target “GenGitVersion” Info screen that popped up, and expand the GenGitVersion under Targets in the Groups & Files view.
Double click on Run Script to open the “Run Script Phase for “GenGitVersion” Info” Screen.

Paste the following into the “Script” Section

Change Info.plist to the name of your Info.plist, and also the git= string to the location of git on your system.
This script will use the “git describe” command to take the name of the latest tag you have committed of the form 0.0.0 and create a short version string of the form 0.0.1-X-abcdefgh-dirty, where the 0.0.1 is the latest tag, -X is the number of commits since that tag, and the -dirty is whether you have committed all your latest changes or not. The version string created by this script will just be the latest tag name, for example 0.0.1.

If you used my .gitignore, then you already have InfoPlist.h added, otherwise add InfoPlist.h to your .gitignore
Right click on your main Target and choose Get Info
Under the General Tab, you want to add the GenGitVersion Target as a Direct Dependent of your main Target
You would do this by clicking the + sign under the Direct Dependencies section and choosing GenGitVersion, and then clicking Add Target.

Under the Build tab, you also need to select, Under Packaging, the checkbox for “Preprocess Info.plist File”, and right above that make sure to enter in InfoPlist.h as the “Info.plist Preprocessor Prefix File”

The last thing you need to do is change your Info.plist file to use the following for CFBundleVersion and CFBundleShortVersionString
CFBundleVersion = APP_VERSION
CFBundleShortVersionString = GIT_VERSION

Now when you use the following in your application, you will have git populating the strings, based on the version numbers of the latest tag and commits.

NSString *shortVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
 
NSLog(@"Short: %@", shortVersion);
NSLog(@"Version: %@", version);

A Sneak Peek At TweetMapper

TweetMapperIcon


Devotees will remember that last year the team over here at iCodeBlog released a little iPad app called TweetMapper that showed a live stream of tweets coming down from 10 major cities. Well since then Twitter deprecated its support for XML and increased its support for better searching. As a result about a month ago we dusted the project off and went at completely rebuilding it. We added Core Data in, support for the now current streaming JSON output from Twitter, the ability to define custom locations (Up to 25, as big as you want), and a whole bunch of other stuff. We’ll be getting it into the store soon, but for now we have a demo video together. Take a look and watch for it’s release in the App store for iPad and iPhone in the next couple of weeks. Thanks for reading!

Tweet Mapper by ELC Technologies Demo from Collin Ruffenach on Vimeo.