11 NovTransition from Individual to Company Developer Account

This month I prolonged my iOS Developer Account for 4th year. This is kind of anniversary. So to celebrate I decided to move from Individual to iOS Developer Company Account.

After reading the post iOS Developer Program: from individual to company I was ready for everything.

My experience wasn’t so bad I’d say it was really flashy and joyful.

Transition

Before start I had a registered company, bank accounts and all papers in digital format. The main difference from past years is you need to be verified by voice – every important confirm is made by phone call where you need to know your name, surname, company name, email, working phone number and EnrollmentID if any. It takes about 5 minutes to spell all those info if you’re from not english native country as me. Only patience. :)

So my process was:

  1. Called to Apple Developer Support USA. They girl said that my account including Provision Portal had to be not available while transitioning and I could do nothing during this time. Confirmed two times that I’d got all her warnings. And confirmed that had prepared everything including company details papers.
  2. After 10 minutes I had an email with Enrollment ID and a link to a form to launch moving process to the Company Developer Account. The form had a few standard fields like company name and business address. 
  3. A few hours after I had second email with asking to call back to any support phone numbers. The transition process was launched.
  4. In the morning I called to the Apple Developer Support UK because US and AU was sleeping already. The girl with very clear voice asked for full name, mail, enrollment id and company name. The girl said OK and asked to wait an email soon.
  5. 5 minutes after I got email with link where I set two check–points and press OK.
  6. Then I got an email with “Request for Company Assignment Complete” and Developer and Provision portals had started to work immediately.
I spoke on quite middle “russian–English” :) but surely and clearly. 
Everything had taken less than 12 hours with sleep at night. 
No fax, no print-scanned or emailed document. Two 2 calls, 3 emails. 
And the latest thing I was pleased is payment for the account for following year. Now payment works via store.apple.com. It’s easy as checkout of any iPod is. It’s absolutely easy if you buy here regularly.
Wish you to be lucky enough to have the same experience.

09 NovWATNED: iOS UI/UX designer

We’re growing.

To increase focus on more difficult, principal and conceptual things we are searching for a second UI/UX designer now.

The main responsibility is to draw cool app designs according to wireframe–mockups. So it’d be a Photoshop guy with experience and passion for design. All work will be related to iOS apps user interfaces.

We need a russian speaking guy to join our team remotely or in Kiev.
In return, we offer real challenges and knowledge sharing.

This is a russian version with test job.

28 SepMockup.io – service for iOS design mockups demonstration

Colleagues,

for the past 2.5 years we’ve been working on more than 40 iOS applications and 100+ their versions. During this time, we saw thousands of billets, mockups and final designs. With every project we assimilate more and more the importance of design in the iOS application development process. Therefore we ventured to create a product that I want to tell you today.

Mockup.io – service for iOS design mockups demonstration

It makes really easy to demonstrate mockups in a browser or directly on the iPhone and iPad. View mode automatically adjusts to the client device adding a device frame if necessary. You can keep a project as a webapp on your device by adding icon to the springboard.

Foremost we tried to solve our actual internal problems. We already use Mockup.io to show mockups within the team and customers, and friends to get feedback.

The current version is simple, but already useful.
Please send us your experienced feedback. We appreciate that.

Mockup.io

07 SepA successful way of supporting multiple builds

This post describes how we support multiple builds. Most-often you need this if you work for enterprise or release own product line.

We follow these notes to add new builds to one product which has multiple targets/builds. The product is one Xcode4 project. Each build may have own graphics for a customer and may have some special settings like server settings via preprocessor and user-defined variables.

How to Make a New Build

  1. Copy existing Target – select main project file and find targets sections, then duplicate by right click menu
  2. Rename target according to customer name
  3. Remove and recreate Scheme – goto “Product > Manage Schemes …”, finds your’s and remove it, it usually looks like “copy of Main Build”; then press “Autocreate Schemes Now”
  4. Rename *.plist file, change its name in Target settings, check if *.plist file has “Relative to Project” Location in file settings in File Inspector on the right side of Xcode
  5. Add necessary Icons, Splash screens and graphics to the project

Not obvious, but quite easy. I’d not publish this note if it’s so simple. We faced to problems that prolong this process from 10 minutes to about 30–40 minutes.

That’s why I want to give you a list of notes that makes things solved faster by reading this:

  • When splash screens are not shown it’s need to check names. For example for product name of customer-X we have ProductX target/build: “ProductX-Default.png” – is right settings for iPad in *.plist, but file names are “ProductX-Default-Landscape~ipad.png” and “ProductX-Default-Portrait~ipad.png”. They’re recognized automatically.
  • Entitlements file must be written with its extension – “Entitlements.plist” – in the Target settings
  • Files like *.plist must have according Target membership settings – look at File Inspector “Target Mambership” section.
  • Location of files must have “Relative to Project” but NOT something like “Absolute”. It’d be a problem when you share project code.
  • ${EXECUTABLE_NAME} settings must be present in *.plist file. Other way app just doesn’t run and nobody knows why
  • if on launch you see Running or Attaching and nothing is happening, it’s better to remove your user settings inside Project File. Do it carefully by right clicking on project file in Finder then press “Show Package Contents” and find your name inside “xcuserdata” directory. Remove yours subdirectory and run cleaned project again. If it’s helped then it means the EXECUTABLE_NAME settings wasn’t renamed while you copying Target and Xcode was waiting for wrong EXECUTABLE_NAME to be launch. Good if it works now.

I’d very recommend to go through the list if you have really strange or unclear problem.

Happy building! :)

18 JulA few tips on how to use open sourced ShareKit easily

Fork me on GitHubJust a quick note on How to use ShareKit open source library a little bit better.

0. Settings for Social Networks
Getting ShareKit first time you need to setup social networks. Nothing difficult because it has so good commented guide in SHKConfig file. I use Git and made a public fork of ShareKit for the Alteprlay. So now when I push back changed code of ShareKit as a submodule every one can see it. And my settings also :)

Despite that a solution is so obvious I still want to share it because it could save you hours to cut your private settings from public Github commits.

Just copy SHKConfig.h file from the lib directory to your source files and remove original one from the project. Then do anything you want with settings and it will always be in your private repository.


1. Activate URL Sharers for text sharing

In the Forismatic app we need to share quotes via Google Reader and make possible to copy quote to the Pasterboard. Both features are disabled by default.

There are several boolean methods in SHKSharer that control whether a derived Sharer can share Text, URL, Image or File. So we can find +(BOOL)canShareText and return YES instead NO. It just works.

Each time you update ShareKit library not depending you use Git or whatever you need to change this parameters again and again. So the right suggestion is Obj-c Categories. Example for Google Reader:

The same way you can deny or allow any service for any content.

3. Support both localization for the target app and ShareKit

An app may have only one active Localizable.strings for each language. ShareKit provides localizations so it has many such strings.

Again, in the Forismatic app we have own localizations and own *.strings. I was surprised when found they compete with ShareKit translation strings. The active one is that one which is last added :)

The simplest solution is just copy those translation content you need to your *.strings and it’ll work. But again it’ll be hard to manage updates, etc. So I suggest more accurate solution.

  1. Rename all ShareKit’s localizations to LocalizableShareKit.strings
  2. Find SHK.m and change NSLocalizedString(key, key) to NSLocalizedStringFromTable(key, @”LocalizableShareKit”, key)

So now it doesn’t compete with your own localizations and gets translations from renamed *.strings.

Don’t forget to push it back to your fork and merge in right way each time you update the lib.

4. Next big thing

The next thing I want implement is to change sharing text depending on which Sharer call it. For example,

  • if it’s Email Sharer I want to attach AppStore link after a quote
  • if it’s Twitter Sharer it may vary of how long a text quote because twitter can contain 140 chars only. So if it’s more than 140 then it’s better to cut the quote and attach a link to this quote.
  • etc.

17 Jul3 ways to unretina iPhone4 @2x images to standard non-retina ones

Since iPhone4 with retina display was released everyone faces to unretina process. So every design is prepared in double size and then need to be scaled to be shown on non-retina displays.

(retina at the right)

I tried a few ways of scaling @2x images to @1x, so I want to share them.


1. Unretiner
First one and the simplest one is to use 3d part software. I tried Unretiner from the Mac AppStore. It does the job fast and easy as one click, but unfortunately not perfectly. And colors are distored. BTW, it’s definitely defined in the app description – “Great for testing out non retina devices before the big painful export from Photoshop.”

This is almost true. Keep going.

2. Automator
Next obvious thought for Mac users is to try to automate the process by your-self. Open Automator and quickly create own Workflow (or download already made one):

  1. “Find Finder Items” and select input folder
  2. “Replace Text” with “Copy Finder Items” to output folder before replace; Setup replace “@2x.” to “.”.
  3. “Scale Image” from Photos group of actions; scale to 50%
  4. “Reveal Finder Items” to see the result.

Your workflow has to look like this one at the right. Just press to execute and get the result in a few seconds.

So it seems working. But try to zoom the result images and you will notice inaccuracies. There are very small and thin inaccuracies with 1–2px width or height. The right one at the right. The one at the left is from Automator.

3. Photoshop
Easy to guess Photoshop is the best way to have scaled images. Except the way to design for retina and non-retina separately. The last one is hardly worth that.

As it was said it’s a “the big painful export ..”. Honestly it’s not always so. :)  


I usually did conversion for each file separately by pressing Cmd-Alt-Shift-S and setting Percent to 50%. It’s just about seconds but Anton (the team designer) showed me better way.

I made a video to show how simplify the whole process with Photoshop’s version of Automator – it’s called Actions (from Window > Actions) and Batch (from File > Automate > Batch).

So you may create an Action for the right scaling and execute it over the folder to get all images 1/2x scaled. And rename all images at once with Automator easily after that.

I’d like to see Apple standard solution of the problem somewhen.

14 JulGPS Speed 2.0 on the AppStore

At last the long-awaited update for GPS Speed​​ is released.
We made entirely new design and a few new features. And more are coming.
The coolest thing we understood and implemented is two modes: 
  • Portrait mode is for hand using. It has a lot of details but interface is smaller, so you need to keep it in hands to use. We call it Hand Mode.
  • Landscape mode has less information but everything is visible from 1–2 meters easily. So you may use it whenever you want. It’s Digital Mode.
Also visit our brand new website and Like the GPS Speed page to let us know you really like it :)

Description
GPS Speed shows approximate speed and direction. 
Use it when you are a passenger or there is no standard speedometer.

BASICS:
✔ 60/180/540 are switched automatically
✔ Kmh/Mph/Knots
✔ Compass
✔ Timer

PRO:
✔ Digital speedometer in horizontal mode
✔ Max speed
✔ Height
✔ GPS signal indicator

Please request any wishful feature, e.g. statistics, signals, sharing, routes, maps, themes.

20 JunAlterplay 3.0

Brand–new website was launched. It’s the third website we have since 2009 so it’s v3.0.
We still love how old one interacts so it’s made available - 2010.alterplay.com.

New one looks great! It has a special page for each product. Really! Each product page is unique designed and looks just AWESOME. English/Russian languages. Switching between pages and languages takes a moment. Just like a webapp. Check it out.

www.alterplay.com

27 MayGrand Central Dispatch magic – async image demo

The Grand Central Dispatch (GCD) is a big topic. The first thing I wanted to try when I started to learn it a few months ago is set of asynchronous operations like image downloads. Check out my old sample how to get Asynchronous UIImage from web or this one if you need to download a really big file in the background on the app launch.

Current sample is for situation when you need to download a set of files, so you must have a queue. The magic of GCD is that it manages queues automatically depending of available resources and their priorities. GCD does that efficiently because of low level implementation and Bloc

Demo

  • has a predefined set of urls to download
  • creates a GCD queue and starts to download images
  • shows each image as soon as it’s available with appearing–dissappearing animation

Implementation

Тhe demo result is nice Category UIImageView+DispatchLoad:

Note, this is just a sample how GCD works with queues and asynchronous operations. Don’t use it in production because it’s usually need to cancel and re-prioritize network downloads. GCD approach is nice for local operations like saving a big file to disk. GCD lets us to keep UI smooth while heavy operations – that’s the main point.

26 May500.000 Apps on the AppStore

Half a million is а big number for what ever it is. Especially when it is about the everyday applications made mostly by independent developers. In fact a great milestone was overcome. Without a doubt we will have an interesting and exciting future, and we are pleased to be part of this evolutionary process.

  • 85.000+ unique developers, 4.6 ave apps per develope
  • 37% of apps are free
  • $3.64 – the average price for paid apps
  • $891.982 – value of all live apps
  • 15% – Games, 14% – Books, 11% – Entertainment, 8% – Education, 7% – Lifestyle, 44% – Others