Skip to main content


Showing posts from 2013

How to resign an IPA with new bundle Id, certificate and entitlements

Create an Entitlements.plist using Xcode Include the following keys values in the plist file.  application-identifier (String) -> get-task-allow (Boolean) -> NO Put the Entitlements.plist in the same folder of the app.ipa file Unpackage the app unzip app.ipa Delete current code signature rm -rf Payload/ Open Payload/ in Xcode and update the bundle ID(CFBundleIdentifier) Copy the new .mobileprovision file to Payload/ Run the codesign command codesign -f -s "iPhone Distribution: Company Certificate" --resource-rules Payload/ --entitlements Entitlements.plist Payload/ Repackage the app zip -qr app-resigned.ipa Payload/ Sample Entitlements.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "

How to add parallax effect to your apps

UIInterpolatingMotionEffect *interpolationHorizontal = [[UIInterpolatingMotionEffect alloc]initWithKeyPath:@"center.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis]; interpolationHorizontal.minimumRelativeValue = @-10.0; interpolationHorizontal.maximumRelativeValue = @10.0; UIInterpolatingMotionEffect *interpolationVertical = [[UIInterpolatingMotionEffect alloc]initWithKeyPath:@"center.y" type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis]; interpolationVertical.minimumRelativeValue = @-10.0; interpolationVertical.maximumRelativeValue = @10.0; UIMotionEffectGroup *interpolationGroup = [[UIMotionEffectGroup alloc]init]; interpolationGroup.motionEffects = [NSArray arrayWithObjects:interpolationHorizontal, interpolationVertical, nil]; if([aView respondsToSelector:@selector(addMotionEffect:)]){ [aView addMotionEffect:interpolationGroup]; }

Experiencing Sencha Touch: VW Dealer app

Sencha Touch, a high-performance HTML5 mobile application framework. We used Sencha to build an iPad application that allows Volkswagen field managers and dealers to show customers everything about VW cars. Application features: Work offline. Update application data without reinstalling the app. Support multiple events. Capture customer information locally and upload to server later on. Vehicle gallery and videos slide show. Vehicle trim specs, color specs, technical specs, pricing. Vehicle comparison.  Since this app needs to work with iPad 1st generation, memory management became very important. We spent good amount of time to tweak the app to have small memory footprint.  The app is being used at places with no wifi. When the application is installed, it downloads all data from a server and stored on the iPad using HTML5 local file system feature. App uses high quality gallery images, so using manifest method would exceed the browser storage limit. The app its

VW Merge & Purge campaign

This application uses Javascript framework backbone and several APIs built using PHP. I was working on the backend PHP with MySQL. The one major component is PHP GD image. All the Facebook feed images are generated with dynamic information using GD.

iPhone app: real time video sharing

An native iPhone app prototype that steams camera video between two iPhones. Not very complex, but it took a good amount of research and learning. Major classes are NSOperation, AVFoundation and GameKit. Multi-threading is necessary to prevent UI lockup, so NSOperation is used.  AVFoundation - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer (CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection is the key element to capture video frames from camera.  GameKit peer-to-peer communication via Bluetooth is used to send and receive data between two devices.  Result was that I was able to reach about 4 frames per second. Did not get to try Game Center peer-to-peer via local WiFi. I believe that will increase the frame rate.

NodeJS and real time communication application

It is always fun to try out something new. This time I had time to create a prototype game that uses NodeJS server and PubNub API. Multiple players join the game to answer a movie trivial question. Whoever answer the question correctly first gets to control the movement of a real object remotely. Players that do not win can keep playing the game while the winner controls the real object. The server app keeps track of the winner, game status and the real object status. Making sure only one player has access to control the real object.