I’m a loyal user of iPhone. I’ve been using it since its first version and now I’m on 4S. Though I’m staying in iOS camp and don’t have any intention of moving, I occasionally get the urge to test out and see what’s out there. That’s the reason why I convinced myself to own and play with Dell Streak 5″ phone and Google Nexus S. They are both smart smart-phones. But it’s hard to pick their pros and cons by simply “playing” with it. You’ve got to use it. Daily. For everything including surfing, speed dialing, social-networking and games. Everything. And that’s something that I didn’t get a chance to do until last summer when I was traveling and in need of an unlocked phone. I could make my iPhone work (don’t ask me how) but thought I’d give an Android phone a real kick.
So, I spent 3 weeks using my Dell Streak full-time. I’m not going to tell you about how bad or good Android phone is compared to its counterparts, or discuss my constant efforts to find for an outlet to charge the phone. But I do want to talk about one feature that I used a lot but can’t find on iPhone: It’s the well-known pattern lock feature. If you’ve never seen it, here is a screenshot.
The idea is simple. Rather than entering 4 digit PIN, you connect the 9-dots (3 by 3) presented on the screen to form a secret pattern. The number of dots connected to form a pattern can be as many as the available dots on screen. In the case of Android lock, the max is 9 dots and the min is 4 dots. In my 3 weeks of usage, I think I can unlock faster using pattern lock versus using PIN lock. And that’s when I started to wonder why in all the apps that I’ve ever used on iPhone, none of them provides this type of lock. Mint is one of my most frequently used apps. I’d love to see it using pattern lock instead of pin lock. It will save me about 0.5 second every time I use the app. Yeah, that’s a very valuable 0.5 second.
So, I set aside 2 hours of my time and created a component that provides the pattern lock feature. If you’re an iOS developer, feel free to use it in your app. Mention Grio if you feel indebted to us. Lock your user’s data more securely. If security is less of your concern, do it for the sake of giving users more options.
The code is pretty self-explanatory. The main class is DrawPatternLockViewController. You can set the matrix size by changing the following constant:
#define MATRIX_SIZE 3
In the sample app, there’s a Lock button, which will bring up the pattern lock screen.
It’s very easy to use the component. Create an instance, register callback and you’re all set. Here’s the sample code:
DrawPatternLockViewController *lockVC = [[DrawPatternLockViewController alloc] init]; [lockVC setTarget:self withAction:@selector(lockEntered:)]; [self presentModalViewController:lockVC animated:YES];
When the user is finished drawing, lockEntered will be called. You can take a look at that function in PatternLockAppViewController. It will compare what user entered with a hardcoded pattern. In this implementation, I store the pattern in an NSString. If you replace the dots with series of numbers (1, 2, 3, …) from top left moving in the right direction downward, you’ll see the dots to be similar to the keypad on a phone. And a pattern string stores those numbers by concatenating them in proper order. So, if you draw a pattern by connecting the dots along the edge clockwise starting from top left toward bottom right corner, you’d end up with an NSString with value @”0102030609″. You can easily change the way you store and interpret a pattern by changing getKey function in DrawPatternLockViewController.
Note: The dot was designed by Grio’s talented designer, #Yui. This project was written using iOS 5 with ARC on. You can download it here.