Archive for December, 2009

How we fixed the UTF-8 supported PDF generation Issue

PDF generation was an old request by one of our client. Our team struggled a lot to solve this.
The root problem was font. We were in need of such font which can support UTF-8 characters. But none of the PHP libraries were having such support by default. Finally we selected TCPDF as the PDF generation library because it has Unicode supports and able to generate UTF-8 PDF in the presence of suitable font.

Here are the steps by which we solved this issue.

1. Searched the font supported by UTF-8 encoding and selected “osaka.unicode.ttf” as it was best matching to our requirement. Copied it into the TCPDF’s utils folder.
2. Converted it to the font’s metrics file.
- Changed the font file name to lower case.
- Used a PHP script “makeallttffonts.php” to convert the ttf file to font’s metrics file. This script comes by default with TCPDF.
- Copied generated font map files (only osaka.unicode.ctg.z, osaka.unicode.z, osaka.unicode.php)to the font’s directory.
3. Used the font name during PDF generation.


Android Push Notification

Push Notification:

Push Notification allows an application to listen for messages being ‘pushed’ to it from the server.
Through Push Notification, our apps can provide uses even when they aren’t running.

Different techniques that could be used for push notifications in android:

1)  Polling:  In this technique device is polling the server on a regular basis to see if there is anything there.

untitled.bmp

Polling that heavily just to check for notification is not a good idea,that would hurt battery life pretty badly after not too long.

2)  Creating a service: In this technique service create a persistent connection to your server.
This will also drain the phone’s battery and it will create problem on server side also if you had more users

3)  SMS: In this method clients gets notified by SMS.

untitled2.bmp

This technique is better as compare to other techniques because:

1) Transfer content as soon as available
2) Save device battery
3) Reduce data traffic for user

Way to implement push via SMS:

1) Your application should add permission in manifest :
Permission:  <uses-permission android:name=”android.permission.RECEIVE_SMS” />
2) and Registers a BroadcastReceiver, either in the manifest XML or in Java, and will get control when the events occur.
<receiver android:name=”.ReceiverClass”>
<intent-filter>
<action android:name=”android.provider.Telephony.SMS_RECEIVED” />
</intent-filter>
</receiver>
3) SMS Header may contain “app port” field that is dedicated range of free usable port numbers.Port handling not yet supported in Android 1.6.
4) You’d have to parse the PDU and get the port from there manually, you can listen to all SMS messages, parse the PDU of each incoming message and see if the destination port
matches the one that you are expecting. But so can other apps.so there’s no way to ensure that just one specific app gets to know about an incoming SMS to a specific port.
5) After matching ports appliaction can handle notification with the help of notification manager.
The problem with this method is that Android currently has no way to cancel the notification that is sent by the messaging app.So for every notification your app gets, the OS will also show a text message.


© Copyright 2009 TechJini Solutions Private Limited. All Rights Reserved
iDream theme by Templates Next | Powered by WordPress