Native App development is here to stay

Leave a comment


Native Vs Web App

With the Jonnathan Dan’s article , I sense a strong case for the survival of native development.

Earlier when I on discussions with my friends who work in web development , who lead mobile projects and with people on technical forums, most of them were in one voice told that Native Mobile development will die with some shrilling Hybrid approach is best of both the worlds.

I then felt that native mobile development will in future become suitable for a niche market like Games, apps where audio , graphic rendering and where too much dependence with hardware APIs present.  Other apps whose goal is to present the data alone for the users can be managed with a Hybrid app and when the app’s brand is established and when we do not have a dependency with Hardware or you get hardware access with HTML5, hybrid approach can also be killed. But reading in to his article gives me a new insight. That is,

Mobile has less space and those who use it are mostly they are busy doing something else either in travel or when they are in break, rushing in to station, chatting with their  girl friend or boy friend and expects  things engage quickly. They do not want to see much of their screen being occupied with loading text  , spinner or  which  behaves clumsily not being coped to our instincts.And as for my experience I have experienced all this with Mobile Web Apps even with 3G (India) connectivity.

Any developer or a brand who wanted to keep their customer loyalty needs to offer their app with the constraint so tough to meet: Not wasting the users’ time.

HTML5 in mobile with Hybrid development or standalone app has not consistently achieved this. And Native has achieved this. But at a bigger cost and a necessity manage lot of developers and lot of code.

So until HTML5 is at its blazing speed, Native is going to stay.

Integrating DiffMerge with svnX

Leave a comment


After mentioning the DiffMerge as the  Diff Application in svnX preferences, I was receiving the below error message each time I tried to use the DiffMerge from SVNx.

The DiffMerge application was not able to be opened due to the non availability of diffmerge.sh file in the /usr/local/bin directory.

Copy the diffmerge.sh file from the DiffMerge.app’s  Resource folder  in to the bin by the following command:

cp /Applications/DiffMerge.app/Contents/Resources/diffmerge.sh /usr/local/bin/diffmerge.sh

If this throws you Permission Denied error,  run the command using sudo command.

Once the copy is done , the svnX application will be able to open DiffMerge app.

Connecting to VPN from Mac OSX

Leave a comment


Connecting to VPN from Mac is not straightforward as it is in Windows. The below tutorial will help us in configuring the VPN in mac using System preferences.

 

http://anders.com/guides/native-cisco-vpn-on-mac-os-x/

Leave a comment


This will certainly create a lot of opportunities in Healthcare around iOS ecosystem

Bluetooth Smart

Big news from Texas Instruments, they’ve just released a video demonstrating the keyfob included in the CC2540DK-MINI dev kit communicating with the Iphone 4S using the GATT interface through the new Core Bluetooth API.

This is a particularly big deal because it shows the CC2540 interacting with the iPhone 4S using the stock 2540 mini dev kit without an authentication chip.

View original post 322 more words

Leave a comment


Tablets might make inroads in to Construction and it seems any where there is a field work.

iOS and Bluetooth Communication

Leave a comment


Communication to Bluetooth devices was possible with External Accessory Framework by registering in MFI program. But this case was until iOS 5 came with which came the CoreBluetooth Framework. But what is the difference between them?

External Accessory Framework:

1.  To use this framework we need to be registered in MFI Program and should have made our bluetooth enabled device MFI compliant. To register here as such we need not pay for Apple. But there are costs involved in getting a certificate from third parties that your hardware does not interface with iOS device.

2. It is available for  all iOS based devices that run in iOS 3.0 and above.

CoreBluetooth Framework:

1. There is no entry cost, no registration needed.

2. It is used only for devices that are compatible with Bluetooth Low Energy.  (Bluetooth Low Energy is a feature of Bluetooth 4.0  which is claimed to be consuming far less power than that of classis Bluetooth devices)

3. iPhone 4S  is the only supported iOS device that is BLE enabled, so Core Bluetooth Framework based app can at this point in time be supported only in that device.

4.  It is supported only from iOS 5.0.

Leave a comment


Got Problems with Archiving and unarchiving UIImage or UIImageView?

Mobile App Development

Note: The below implementation is valid only if you support versions below iOS 5.0. For iOS 5.0 this problem is fixed by Apple.

If you are planning to archive and unarchive the UImage or UIIMageView , do not forget to implement the initWithCoder and encodeWithCoder methods of UIImage.

If you fail to do so, your app will crash with the error: -[UIImage encodeWithCoder:] unrecognised selector sent to instance.

View original post

Common iOS memory mistakes developers commit

Leave a comment


Some of the common mistakes an iOS developer does are provided below:

1. Missing dealloc method as part of  each Class

2. Missing [super dealloc] methods call in dealloc method.

3. Leaving NSLog statements in production ready code. Too much NSLog can consume lot of memory and your app will throw memory warning very soon.

4. Not being aware of the power of iOS debugger commands to nail the crashes. Environment variables NSZombieEnabled, NSDebugEnabled, MallocStackLogging can help you a lot in finding the reasons behind crashes.

5. When using the above commands, forgetting to disabled in the production code.

6. Not leveraging the power of accessors. To leverage their power read this document https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html

7. Not setting pointers to nil after releasing. Even though this is not necessary,  doing this is will help us in avoiding any inadvertant usage of this object variable, unless it is reassigned with any other object.

8. Trying to use retainCount of objects created.  Since there is no  1 to 1 correspondence between the retain count and calls to  retain/release, it is better we refrain from sing this.  This link might be use ful .http://www.friday.com/bbum/2011/12/18/retaincount-is-useless/

This list will be a living list and I will keep updating it.

duplicate symbol _OBJC_CLASS_$_SBJSON

1 Comment


I used Selenium NativeDriver for Testing an App. My Application was using JSON Library.  And I was getting the below  error on building:

duplicate symbol _OBJC_CLASS_$_SBJSON.

I learned that The NativeDriver library was using JSON for data transfer. So It also was using the same  JSON library.

I was able to fix the problem by excluding the JSON Source files through Xcode settings.

The fix is as below:

Add a user-defined build setting with the name “EXCLUDED_SOURCE_FILE_NAMES”  in Build Settings for the Project’s Target ,  and for the value add :

JSON.h SBJSON.h SBJSON.m SBJsonBase.h SBJsonBase.m SBJsonParser.h SBJsonParser.m SBJsonWriter.h SBJsonWriter.m NSObject+SBJSON.h NSObject+SBJSON.m NSString+SBJSON.h NSString+SBJSON.m

Below images might help you in adding  User defined setting to Project.

Preapproval Process using PayPal MPL in Android

1 Comment


Introduction

The objective of the document is to explain the steps involved in doing auto renewal payment in PayPal using its Mobile Payment library for android mobile.

Steps to get confirmed PreApproval Key

  1. The first step towards integrating PayPal with android application is that we need a PayPal sandbox account for testing. So create new sandbox account if you don’t have one from following URL https://developer.paypal.com/cgi-bin/devscr?cmd=_signup-run
  2. Sign in with the user id and password.
  3. Create Test accounts for both buyer and seller. You will get the API credential while creating seller account, those API credential will be used for getting preapproval key and payments.
  4. From your Local server send the preapproval request to paypal using the following parameters. You should use your account details and API credentials here.
    1. requestUrl: https://svcs.sandbox.paypal.com/AdaptivePayments/Preapproval
    2. requestMethod: POST
    3. requestBody: requestEnvelope.errorLanguage=en_US&cancelUrl=http://www.bytelyte.com/PayPal_X_NVP_tester.php?cmd=test&currencyCode=USD&endingDate=2011-11-11&maxAmountPerPayment=30&maxNumberOfPayments=4&maxTotalAmountOfAllPayments=120&pinType=NOT_REQUIRED&returnUrl=http://www.bytelyte.com/PayPal_X_NVP_tester.php?cmd=test&startingDate=2011-09-21&senderEmail=your buyer mail id
    4. headers: charset”,”utf-8″,”Content-Type”,”text/xml”,”X-PAYPAL-DEVICE-IPADDRESS”,”127.0.0.1″,”X-PAYPAL-APPLICATION-ID”,”APP-80W284485P519543T”,”X-PAYPAL-RESPONSE-DATA-FORMAT”,”JSON”,”X-PAYPAL-REQUEST-DATA-FORMAT”,”NV”,”X-PAYPAL-SECURITY-SIGNATURE”,”API Signature”,”X-PAYPAL-SECURITY-PASSWORD”,” API password “,”X-PAYPAL-SECURITY-USERID”,”API UserName”
  5. If the above process and parameters are correct you will get a Preapproval key from server as response.
  6. Response:{“responseEnvelope”:{“timestamp”:”2011-09-21T02:54:44.020-07:00″,”ack”:”Success”,”correlationId”:”606efc1b8abb0″,”build”:”2142261″},”preapprovalKey”:”PA-81Y46219NL419022F”}
  7. This Preapproval Key say PA-81Y46219NL419022F has to authorize by the application. Pass the Preapproval key and merchant name to PayPal MPL from your android application. Here we used “SimpleDemo” android application given by the PayPal MPL library for understanding purpose.
  8. The Mobile User should login and agree the PayPal preapproval payment. After the user agreement the preapproval key get authorized and return back to the application.

Steps to make Payment

From your Local server by using the authorized preapproval key you can make a payment using the following parameters.

  1. requestUrl: https://svcs.sandbox.paypal.com/AdaptivePayments/Pay
  2. requestMethod: POST
  3. requestBody: requestEnvelope.errorLanguage=en_US&actionType=PAY&preapprovalKey= Authorized preapproval key&receiverList.receiver(0).amount=30.00&receiverList.receiver(0).email=your seller mail id¤cyCode=USD&feesPayer=EACHRECEIVER&memo=Simple payment example.&cancelUrl=http://your_cancel_url&returnUrl=http://your_return_url&ipnNotificationUrl=http://your_ipn_notification_url
  4. headers : “charset”,”utf-8″,”Content-Type”,”text/xml”,”X-PAYPAL-DEVICE-IPADDRESS”,”127.0.0.1″,”X-PAYPAL-APPLICATION-ID”,”APP-80W284485P519543T”,”X-PAYPAL-RESPONSE-DATA-FORMAT”,”JSON”,”X-PAYPAL-REQUEST-DATA-FORMAT”,”NV”,”X-PAYPAL-SECURITY-SIGNATURE”,”API Signature”,”X-PAYPAL-SECURITY-PASSWORD”,” API password “,”X-PAYPAL-SECURITY-USERID”,”API UserName”

If the above parameters are correct the amount mentioned in the “receiver(0).amount=” column will get transferred to the seller account and you will get a Pay Key as response from the PayPal server. You can login in to both seller and buyer account to ensure the above process.

Older Entries