<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-5996807726674630037</atom:id><lastBuildDate>Wed, 09 Oct 2024 02:00:49 +0000</lastBuildDate><category>J2ME</category><category>iPhone</category><category>Blackberry</category><category>Objective C</category><category>Code Samples</category><category>Application Deployment</category><category>Symbian</category><category>Android</category><category>Coding Tips</category><category>JDE</category><category>Java</category><category>Mobile app</category><category>development</category><category>API</category><category>Admob</category><category>Advertising</category><category>Alert Box</category><category>Application Development</category><category>BES</category><category>BIS</category><category>Blackberry PUSH</category><category>Brew</category><category>COD file creating</category><category>Converting MIDlet</category><category>Eclipse</category><category>HTTP PUSH</category><category>Http connection</category><category>Installation</category><category>Life cycle</category><category>MDS</category><category>Memory Management</category><category>Objective-C</category><category>Pinch Media</category><category>Preprocessor</category><category>Signing Blackberry Apps</category><category>TableView</category><category>ViewController</category><category>build</category><category>compiler</category><category>fixing</category><category>keyboard</category><category>manufacturer disclaimer</category><category>mistakes</category><category>mobile client</category><category>plug-in</category><category>rapc</category><category>tcp</category><category>thick client</category><category>thin client</category><title>Mobile Online</title><description>Technical articles and samples for Mobile Developers</description><link>http://mobility-techtips.blogspot.com/</link><managingEditor>noreply@blogger.com (Kannabiran)</managingEditor><generator>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-5208519457035234847</guid><pubDate>Mon, 28 Feb 2011 05:23:00 +0000</pubDate><atom:updated>2011-02-28T10:53:38.384+05:30</atom:updated><title>List of 83rd annual Oscar winners - Boston.com</title><description>List of 83rd annual Oscar winners... &lt;a href=&quot;http://www.boston.com/ae/movies/oscars/articles/2011/02/27/partial_list_of_83rd_annual_oscar_winners_1298859309/?camp=misc:on:share:article&quot;&gt;List of 83rd annual Oscar winners - Boston.com&lt;/a&gt;</description><link>http://mobility-techtips.blogspot.com/2011/02/list-of-83rd-annual-oscar-winners.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-907551184127579470</guid><pubDate>Mon, 28 Feb 2011 05:21:00 +0000</pubDate><atom:updated>2011-02-28T10:51:04.129+05:30</atom:updated><title>Android Developers Blog: Heading for GDC</title><description>&lt;a href=&quot;http://android-developers.blogspot.com/2011/02/heading-for-gdc.html&quot;&gt;Android Developers Blog: Heading for GDC&lt;/a&gt;</description><link>http://mobility-techtips.blogspot.com/2011/02/android-developers-blog-heading-for-gdc.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-3848036537075128519</guid><pubDate>Mon, 02 Aug 2010 08:20:00 +0000</pubDate><atom:updated>2010-08-02T13:50:35.170+05:30</atom:updated><title>BlackBerry features and their impact on battery life</title><description>Really an interesting article from RIM about the impact of your application feature on the battery life.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://supportforums.blackberry.com/t5/Java-Development/BlackBerry-features-and-their-impact-on-battery-life/ta-p/514718&quot;&gt;BlackBerry features and their impact on battery life&lt;/a&gt;</description><link>http://mobility-techtips.blogspot.com/2010/08/blackberry-features-and-their-impact-on.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-2112044152209009262</guid><pubDate>Fri, 21 May 2010 07:55:00 +0000</pubDate><atom:updated>2010-05-21T14:31:35.291+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">BES</category><category domain="http://www.blogger.com/atom/ns#">BIS</category><category domain="http://www.blogger.com/atom/ns#">Blackberry</category><category domain="http://www.blogger.com/atom/ns#">Http connection</category><category domain="http://www.blogger.com/atom/ns#">MDS</category><category domain="http://www.blogger.com/atom/ns#">tcp</category><title>Different ways to make an HTTP or socket connection in BlacBerry</title><description>&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;/span&gt; &lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&amp;gt;&lt;meta content=&quot;OpenOffice.org 3.1  (Win32)&quot; name=&quot;GENERATOR&quot;&gt;&lt;/meta&gt;&lt;style type=&quot;text/css&quot;&gt;
&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H3 { margin-bottom: 0.08in } 		TD P { margin-bottom: 0in } 		TH P { margin-bottom: 0in } 		A:link { so-language: zxx } 	--&gt;
&lt;/style&gt; &lt;/div&gt;&lt;h3 style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; page-break-before: always;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Procedure&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;BlackBerry&lt;/span&gt; Java Development Environment (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;JDE&lt;/span&gt;) application programming interface (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;API&lt;/span&gt;) reference includes five ways to make a Hypertext Transfer Protocol (HTTP) or socket connection.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://supportforums.blackberry.com/t5/Java-Development/Different-ways-to-make-an-HTTP-or-socket-connection/ta-p/445879#1&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;BlackBerry&lt;/span&gt; 	Enterprise Server using the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;BlackBerry&lt;/span&gt; Mobile Data System 	(&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;MDS&lt;/span&gt;) Connection&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&lt;a href=&quot;http://supportforums.blackberry.com/t5/Java-Development/Different-ways-to-make-an-HTTP-or-socket-connection/ta-p/445879#2&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;BlackBerry&lt;/span&gt; 	Internet Service&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&lt;a href=&quot;http://supportforums.blackberry.com/t5/Java-Development/Different-ways-to-make-an-HTTP-or-socket-connection/ta-p/445879#3&quot;&gt;Direct 	Transmission Control Protocol (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;TCP&lt;/span&gt;) stack&lt;/a&gt;&lt;/span&gt;  	&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&lt;a href=&quot;http://supportforums.blackberry.com/t5/Java-Development/Different-ways-to-make-an-HTTP-or-socket-connection/ta-p/445879#4&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;Wi&lt;/span&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;Fi&lt;/span&gt; 	network&lt;/a&gt;&lt;/span&gt;  	&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&lt;a href=&quot;http://supportforums.blackberry.com/t5/Java-Development/Different-ways-to-make-an-HTTP-or-socket-connection/ta-p/445879#5&quot;&gt;Wireless 	service provider Wireless Application Protocol (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;WAP&lt;/span&gt;) 1.x gateway&lt;/a&gt;&lt;/span&gt; 		&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&lt;a href=&quot;http://supportforums.blackberry.com/t5/Java-Development/Different-ways-to-make-an-HTTP-or-socket-connection/ta-p/445879#6&quot;&gt;Wireless 	service provider &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;WAP&lt;/span&gt; 2.0 gateway&lt;/a&gt;&lt;/span&gt; &lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;http://supportforums.blackberry.com/t5/Java-Development/Different-ways-to-make-an-HTTP-or-socket-connection/ta-p/445879#6&quot;&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;/div&gt;&lt;h3 style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_14&quot;&gt;BlackBerry&lt;/span&gt; Enterprise Server using the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_15&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_16&quot;&gt;MDS&lt;/span&gt; Connection Service&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_17&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_18&quot;&gt;MDS&lt;/span&gt; Services are included in the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_19&quot;&gt;BlackBerry&lt;/span&gt; Enterprise Server software and handle all browser or connection requests and route the requests accordingly. Data flowing between the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_20&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_21&quot;&gt;smartphone&lt;/span&gt; and &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_22&quot;&gt;BlackBerry&lt;/span&gt; Enterprise Server is encrypted with Advanced Encryption Standard (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_23&quot;&gt;AES&lt;/span&gt;) or Triple Data Encryption Standard (Triple DES). A connection made through &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_24&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_25&quot;&gt;MDS&lt;/span&gt; provides seamless roaming across wireless service providers that support &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_26&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_27&quot;&gt;smartphone&lt;/span&gt; service.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;By default, all &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_28&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_29&quot;&gt;smartphone&lt;/span&gt; models, except the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_30&quot;&gt;BlackBerry&lt;/span&gt; 6500 Series and the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_31&quot;&gt;BlackBerry&lt;/span&gt; 7500 Series, use &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_32&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_33&quot;&gt;MDS&lt;/span&gt;. The following is an example:&lt;/span&gt;&lt;/div&gt;&lt;blockquote style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_34&quot;&gt;(HttpConnection&lt;/span&gt;) Connector.open (&quot;&lt;a href=&quot;http://www.testserver.com/&quot;&gt;http://www.testserver.com&lt;/a&gt;&quot;);&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;/blockquote&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; To make sure that an application uses &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_35&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_36&quot;&gt;MDS&lt;/span&gt; Services as its connection pathway on all &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_37&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_38&quot;&gt;smartphone&lt;/span&gt; models, append the &lt;b&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_39&quot;&gt;deviceside&lt;/span&gt;=false&lt;/b&gt; parameter to the end of the URL. The following URL is an example:&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
(&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_40&quot;&gt;HttpConnection&lt;/span&gt;)Connector.open (&quot;http://www.testserver.com;&quot;+&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&quot;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_41&quot;&gt;deviceside&lt;/span&gt;=false&quot;);&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_42&quot;&gt;BlackBerry&lt;/span&gt; Internet Service&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Applications are also able to make connections through the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_43&quot;&gt;BlackBerry&lt;/span&gt; Internet Service. This connection route is available to third-party developers and is subject to an application approval process. Data flowing over this connection is not encrypted. Hypertext Transfer Protocol over Secure Sockets Layer (HTTPS) or Secure Sockets Layer (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_44&quot;&gt;SSL&lt;/span&gt;) can be used to secure a connection. A &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_45&quot;&gt;BlackBerry&lt;/span&gt; Internet Service connection provides seamless roaming across wireless service providers that support &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_46&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_47&quot;&gt;smartphone&lt;/span&gt; service. Currently, this transport is only available to &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_48&quot;&gt;BlackBerry&lt;/span&gt; Alliance Program members, subject to approval. Information about the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_49&quot;&gt;BlackBerry&lt;/span&gt; Alliance Program can be found at the following web site: &lt;a href=&quot;http://na.blackberry.com/eng/partners/alliance.jsp&quot;&gt;http://na.blackberry.com/eng/partners/alliance.jsp&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Direct &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_50&quot;&gt;TCP&lt;/span&gt; stack&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;For &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_51&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_52&quot;&gt;smartphones&lt;/span&gt; running &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_53&quot;&gt;BlackBerry&lt;/span&gt; Device Software 3.8 and later, a direct &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_54&quot;&gt;TCP&lt;/span&gt; stack is included, which allows a direct &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_55&quot;&gt;TCP&lt;/span&gt; connection to be opened from the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_56&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_57&quot;&gt;smartphone&lt;/span&gt; without using &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_58&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_59&quot;&gt;MDS&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;For &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_60&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_61&quot;&gt;smartphones&lt;/span&gt; operating on the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_62&quot;&gt;iDEN&lt;/span&gt; network, including the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_63&quot;&gt;BlackBerry&lt;/span&gt; 6510 &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_64&quot;&gt;smartphone&lt;/span&gt;, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_65&quot;&gt;BlackBerry&lt;/span&gt; 7510 &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_66&quot;&gt;smartphone&lt;/span&gt;, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_67&quot;&gt;BlackBerry&lt;/span&gt; 7520 &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_68&quot;&gt;smartphone&lt;/span&gt;, and &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_69&quot;&gt;BlackBerry&lt;/span&gt; 7100i &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_70&quot;&gt;smartphone&lt;/span&gt;, a direct &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_71&quot;&gt;TCP&lt;/span&gt; connection is used if the &lt;b&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_72&quot;&gt;deviceside&lt;/span&gt; &lt;/b&gt;parameter is not present. &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_73&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_74&quot;&gt;smartphones&lt;/span&gt; not operating on the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_75&quot;&gt;iDEN&lt;/span&gt; network use &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_76&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_77&quot;&gt;MDS&lt;/span&gt; as the default connection if the &lt;b&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_78&quot;&gt;deviceside&lt;/span&gt;&lt;/b&gt; parameter is not specified.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;If &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_79&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_80&quot;&gt;MDS&lt;/span&gt; is not available at the time of connection, the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_81&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_82&quot;&gt;smartphone&lt;/span&gt; reverts to direct &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_83&quot;&gt;TCP&lt;/span&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;For the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_84&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_85&quot;&gt;smartphone&lt;/span&gt; to use direct &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_86&quot;&gt;TCP&lt;/span&gt;, the user name and password fields must be completed under &lt;b&gt;Options&lt;/b&gt; &amp;gt; &lt;b&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_87&quot;&gt;TCP&lt;/span&gt;&lt;/b&gt; or supplied by the application. &lt;a href=&quot;http://supportforums.blackberry.com/t5/Java-Development-Knowledge-Base/Specify-APN-information-for-a-direct-TCP-connection/ta-p/445860&quot; target=&quot;_self&quot;&gt;this article&lt;/a&gt; explains how to specify access point name (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_88&quot;&gt;APN&lt;/span&gt;) information in a direct &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_89&quot;&gt;TCP&lt;/span&gt; connection.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;To override the default behaviour of the default connection on the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_90&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_91&quot;&gt;smartphone&lt;/span&gt;, the &lt;b&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_92&quot;&gt;deviceside&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; parameter must be included within the connection statement. The following is an example:&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&lt;br /&gt;
(&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_93&quot;&gt;StreamConnection&lt;/span&gt;)Connector.open(&quot;socket://testserver:600;&lt;/span&gt;&quot;+&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&quot;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_94&quot;&gt;deviceside&lt;/span&gt;=true&quot;);&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_95&quot;&gt;Wi&lt;/span&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_96&quot;&gt;Fi&lt;/span&gt; network&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;A &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_97&quot;&gt;Wi&lt;/span&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_98&quot;&gt;Fi&lt;/span&gt; enabled &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_99&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_100&quot;&gt;smartphone&lt;/span&gt; is able to connect over a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_101&quot;&gt;Wi&lt;/span&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_102&quot;&gt;Fi&lt;/span&gt; network to the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_103&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_104&quot;&gt;Infrastructure&lt;/span&gt;. The &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_105&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_106&quot;&gt;Infrastructure&lt;/span&gt; exists between a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_107&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_108&quot;&gt;smartphone&lt;/span&gt; and the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_109&quot;&gt;BlackBerry&lt;/span&gt; Internet Service or &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_110&quot;&gt;BlackBerry&lt;/span&gt; Enterprise Server, allowing for &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_111&quot;&gt;connectivity&lt;/span&gt; to these components. A &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_112&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_113&quot;&gt;smartphone&lt;/span&gt; can also be configured to connect directly to a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_114&quot;&gt;BlackBerry&lt;/span&gt; Enterprise Server using a virtual private network (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_115&quot;&gt;VPN&lt;/span&gt;) connection over a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_116&quot;&gt;Wi&lt;/span&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_117&quot;&gt;Fi&lt;/span&gt; network. What this means is that &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_118&quot;&gt;applications&lt;/span&gt; that are making a connection through a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_119&quot;&gt;BlackBerry&lt;/span&gt; Enterprise Server or &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_120&quot;&gt;BlackBerry&lt;/span&gt; Internet Service (options 1 and 2 ) can have their connections &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_121&quot;&gt;automatically&lt;/span&gt; routed through a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_122&quot;&gt;Wi&lt;/span&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_123&quot;&gt;Fi&lt;/span&gt; connection without any special logic required in the application. &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_124&quot;&gt;Applications&lt;/span&gt; can also make a connection over a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_125&quot;&gt;Wi&lt;/span&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_126&quot;&gt;Fi&lt;/span&gt; network directly to their destination server, bypassing the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_127&quot;&gt;BlackBerry&lt;/span&gt; &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_128&quot;&gt;Infrastructure&lt;/span&gt;, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_129&quot;&gt;BlackBerry&lt;/span&gt; Enterprise Server and &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_130&quot;&gt;BlackBerry&lt;/span&gt; Internet Service. To specify that a connection must be made over a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_131&quot;&gt;Wi&lt;/span&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_132&quot;&gt;Fi&lt;/span&gt; network, the &lt;b&gt;interface=&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_133&quot;&gt;wifi&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; parameter is used. The following is an example:&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&lt;br /&gt;
(&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_134&quot;&gt;StreamConnection&lt;/span&gt;)Connector.open(&quot;socket://testserver:600;&lt;/span&gt;&quot;+&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&quot;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;interface=&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_135&quot;&gt;wifi&lt;/span&gt;&quot;);&lt;/span&gt;&lt;/div&gt;&lt;h3 style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; Wireless service provider &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_136&quot;&gt;WAP&lt;/span&gt; 1.x gateway&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The connection string uses &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_137&quot;&gt;WAP&lt;/span&gt; parameters, which are hosted by a wireless network provider. Not all wireless service providers support connections through their &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_138&quot;&gt;WAP&lt;/span&gt; gateway. Contact the wireless network service to find out if support exists and to obtain a listing of their &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_139&quot;&gt;WAP&lt;/span&gt; gateway parameters.&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The following is an HTTP connection over a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_140&quot;&gt;WAP&lt;/span&gt; gateway:&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&lt;br /&gt;
(&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_141&quot;&gt;HttpConnection&lt;/span&gt;)Connector.open(&quot;http://wap.google.com;&lt;/span&gt;&quot;+&lt;span style=&quot;font-size: small;&quot;&gt; &lt;br /&gt;
&quot;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;WAPGatewayIP=127.0.0.1;WAPGatewayAPN=carrier.com.gprs&quot;)&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;/div&gt;&lt;div face=&quot;inherit&quot; style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The &lt;b&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_142&quot;&gt;WAPGatewayIP&lt;/span&gt;&lt;/b&gt; and &lt;b&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_143&quot;&gt;WAPGatewayAPN&lt;/span&gt;&lt;/b&gt; values are required parameters. Each parameter specified must be separated by a semicolon. The following is a table of supported &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_144&quot;&gt;WAP&lt;/span&gt; parameters:&lt;/span&gt; &lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;meta content=&quot;text/html; charset=utf-8&quot; equiv=&quot;CONTENT-TYPE&quot;&gt;&lt;/meta&gt;&lt;title&gt;&lt;/title&gt;&lt;meta content=&quot;OpenOffice.org 3.1  (Win32)&quot; name=&quot;GENERATOR&quot;&gt;&lt;/meta&gt;&lt;style type=&quot;text/css&quot;&gt;
 	&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		H3 { margin-bottom: 0.08in } 		TD P { margin-bottom: 0in } 		TH P { margin-bottom: 0in } 	--&gt; 	
&lt;/style&gt; &lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot; bordercolor=&quot;#000000&quot; cellpadding=&quot;4&quot; cellspacing=&quot;0&quot; style=&quot;width: 576px;&quot;&gt;&lt;tbody&gt;
&lt;tr valign=&quot;TOP&quot;&gt;&lt;th width=&quot;132&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;Parameter&lt;/div&gt;&lt;/th&gt; 			&lt;th width=&quot;426&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;Description&lt;/div&gt;&lt;/th&gt; 		&lt;/tr&gt;
&lt;tr valign=&quot;TOP&quot;&gt; 			&lt;td width=&quot;132&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;WapGatewayIP&lt;/div&gt;&lt;/td&gt; 			&lt;td width=&quot;426&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;IP address of the gateway.&lt;/div&gt;&lt;/td&gt; 		&lt;/tr&gt;
&lt;tr valign=&quot;TOP&quot;&gt; 			&lt;td width=&quot;132&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;WapGatewayAPN&lt;/div&gt;&lt;/td&gt; 			&lt;td width=&quot;426&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;APN for General Packet Radio Service (GPRS) 				networks only. For testing purposes, you can use rim.net.gprs&lt;/div&gt;&lt;/td&gt; 		&lt;/tr&gt;
&lt;tr valign=&quot;TOP&quot;&gt; 			&lt;td width=&quot;132&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;WapGatewayPort&lt;/div&gt;&lt;/td&gt; 			&lt;td width=&quot;426&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;Gateway port value. If port 9203 is specified, 				Wireless Transport Layer Security (WTLS) is used unless 				&lt;b&gt;WapEnableWTLS=false&lt;/b&gt; is specified.&lt;/div&gt;&lt;/td&gt; 		&lt;/tr&gt;
&lt;tr valign=&quot;TOP&quot;&gt; 			&lt;td width=&quot;132&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;WapSourceIP&lt;/div&gt;&lt;/td&gt; 			&lt;td width=&quot;426&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;IP address of the source.&lt;/div&gt;&lt;/td&gt; 		&lt;/tr&gt;
&lt;tr valign=&quot;TOP&quot;&gt; 			&lt;td width=&quot;132&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;WapSourcePort&lt;/div&gt;&lt;/td&gt; 			&lt;td width=&quot;426&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;Source port value.&lt;/div&gt;&lt;/td&gt; 		&lt;/tr&gt;
&lt;tr valign=&quot;TOP&quot;&gt; 			&lt;td width=&quot;132&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;TunnelAuthUsername&lt;/div&gt;&lt;/td&gt; 			&lt;td width=&quot;426&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;User name for APN session, when Password 				Authentication Protocol (PAP) or Challenge Handshake Application 				Protocol (CHAP) authentication is used.&lt;/div&gt;&lt;/td&gt; 		&lt;/tr&gt;
&lt;tr valign=&quot;TOP&quot;&gt; 			&lt;td width=&quot;132&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;TunnelAuthPassword&lt;/div&gt;&lt;/td&gt; 			&lt;td width=&quot;426&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;Password for APN session, when PAP or CHAP 				authentication is used.&lt;/div&gt;&lt;/td&gt; 		&lt;/tr&gt;
&lt;tr valign=&quot;TOP&quot;&gt; 			&lt;td width=&quot;132&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;WapEnableWTLS&lt;/div&gt;&lt;/td&gt; 			&lt;td width=&quot;426&quot;&gt;&lt;div align=&quot;LEFT&quot;&gt;Explicitly turns on or turns off WTLS. If this 				parameter is not specified, WTLS is used by default for 				connections to port 9203.&lt;/div&gt;&lt;/td&gt; 		&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/center&gt;  &lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;/div&gt;&lt;h3 align=&quot;LEFT&quot; style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in; margin-top: 0in;&quot;&gt;&lt;/h3&gt;&lt;h3 style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Wireless service provider &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_166&quot;&gt;WAP&lt;/span&gt; 2.0 gateway&lt;/span&gt;&lt;/h3&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif; margin-bottom: 0.2in;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_167&quot;&gt;BlackBerry&lt;/span&gt; Device Software 4.2.0 and later includes the ability to connect through a &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_168&quot;&gt;WAP&lt;/span&gt; 2.0 gateway. This is done by locating the service record on the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_169&quot;&gt;BlackBerry&lt;/span&gt; for the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_170&quot;&gt;WAP&lt;/span&gt; 2.0 gateway and using its &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_171&quot;&gt;UID&lt;/span&gt; when making the connection. The following code sample &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_172&quot;&gt;demonstrates&lt;/span&gt; how this can be done.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;meta content=&quot;text/html; charset=utf-8&quot; http-equiv=&quot;CONTENT-TYPE&quot;&gt;&lt;/meta&gt;&lt;title&gt;&lt;/title&gt;&lt;meta content=&quot;OpenOffice.org 3.1  (Win32)&quot; name=&quot;GENERATOR&quot;&gt;&lt;/meta&gt;&lt;style type=&quot;text/css&quot;&gt;
	&lt;!--
		@page { margin: 0.79in }
		P { margin-bottom: 0.08in }
	--&gt;
	
&lt;/style&gt; &lt;br /&gt;
&lt;pre&gt;ServiceBook sb = ServiceBook.getSB();
ServiceRecord[] records = sb.findRecordsByCid(&quot;WPTCP&quot;); 
String uid = null; 
for(int i=0; i &amp;lt; records.length; i++) 
{
    //Search through all service records to find the 
    //valid non-Wi-Fi and non-MMS 
    //WAP 2.0 Gateway Service Record.
    if (records[i].isValid() &amp;amp;&amp;amp; !records[i].isDisabled()) {
        if (records[i].getUid() != null &amp;amp;&amp;amp;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;                records[i].getUid().length() != 0) {
            if ((records[i].getUid().toLowerCase().indexOf(&quot;wifi&quot;)==-1)&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;amp;&amp;amp; (records[i].getUid().toLowerCase().indexOf(&quot;mms&quot;)==-1)) {
                    uid = records[i].getUid(); 
                    break;
            }
        } 
    }
} 
if (uid != null) {
    //open a WAP 2 connection
    Connector.open(_url + &quot;;ConnectionUID=&quot; + uid);
} else {
    //Consider another transport or alternative action.
}&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;meta content=&quot;text/html; charset=utf-8&quot; equiv=&quot;CONTENT-TYPE&quot;&gt;&lt;/meta&gt;&lt;title&gt;&lt;/title&gt;&lt;meta content=&quot;OpenOffice.org 3.1  (Win32)&quot; name=&quot;GENERATOR&quot;&gt;&lt;/meta&gt;&lt;style type=&quot;text/css&quot;&gt;
 	&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 	--&gt; 	
&lt;/style&gt; &lt;/div&gt;&lt;pre style=&quot;font-family: &amp;quot;Helvetica Neue&amp;quot;,Arial,Helvetica,sans-serif;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/pre&gt;</description><link>http://mobility-techtips.blogspot.com/2010/05/different-ways-to-make-http-or-socket.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-8855823416685958576</guid><pubDate>Fri, 14 May 2010 17:40:00 +0000</pubDate><atom:updated>2010-05-14T23:15:26.118+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Android</category><category domain="http://www.blogger.com/atom/ns#">Blackberry</category><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">J2ME</category><category domain="http://www.blogger.com/atom/ns#">mobile client</category><category domain="http://www.blogger.com/atom/ns#">thick client</category><category domain="http://www.blogger.com/atom/ns#">thin client</category><title>Mobile thick clients vs thin clients</title><description>For many application developers, the fastest, easiest way to introduce a mobile solution was to &quot;chop down&quot; an existing Web-based application. Users that had a device with a browser could then access the applications. However, because the resulting applications were not designed for the navigation capabilities of a mobile device or the smaller bandwidth, the user experience suffered. These problems can be solved by using a thick client instead of a thin client.&lt;br /&gt;&lt;br /&gt;With a thin client, there is nothing running on the device except the presentation. All the content is on the host. The data, along with the rules to display it, are sent down and rendered on the local machine. Everything is done on the server; every request requires going back to the host. With a thick client, however, the presentation engine is on the local machine, which does the work.&lt;br /&gt;&lt;br /&gt;The need for thick clients is driven by the complexity of the information and the presentation demanded by&lt;br /&gt;mobile users. Mobile users, too, want robust applications and a good user experience. Years ago with the&lt;br /&gt;PC, users went to a Web site and got straight HTML. PC users said, &quot;That&#39;s not good enough.&quot; Then came&lt;br /&gt;dynamic HTML, Java applets, Flash, and great plug-ins.&lt;br /&gt;&lt;br /&gt;It depends on&lt;br /&gt;&lt;ul&gt;&lt;li&gt;what application you want to build&lt;/li&gt;&lt;li&gt;which audience you want to target&lt;/li&gt;&lt;li&gt;Operating cost&lt;/li&gt;&lt;li&gt;Billing and revenue models &lt;/li&gt;&lt;/ul&gt;Thin clients are good for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Displaying regularly changing information eg. news.&lt;/li&gt;&lt;li&gt;Casual one-off browsing, where the user is unlikely to ever need to come back and benefit from having any sort of state remembered, and not being able to access any content is not a serious problem (due to lack of signal, etc).&lt;/li&gt;&lt;li&gt;Very changeable data with simple display requirements that change unpredictably over time, with minimal data entry requirements.&lt;/li&gt;&lt;li&gt;Situations where reliable network connections are guaranteed – either fast connections, or very small nuggets of content that can be found very quickly.&lt;/li&gt;&lt;/ul&gt;Thick clients are good for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Repeated user experiences – local secure caching can reduce data entry, always a significant pain point on mobile.&lt;/li&gt;&lt;li&gt;Intelligent data delivery can reduce costly data overheads whilst providing faster responses for the user for known types of data set.&lt;/li&gt;&lt;li&gt;High interactivity and improved user experiences with many potential data visualisation models and on-client validation (minimising round trip requirements to the server, which cost money and time).&lt;/li&gt;&lt;li&gt;Improved branding around content, which only ever has to be downloaded once rather than at the start of ever session – handsets rarely dedicate persistent storage to browser caches so ever visit to a branded site reloads many Kbs of images, CSS etc.&lt;/li&gt;&lt;li&gt;Real security, guaranteed – there are known issues with Wap security which can even affect Wap2 browsers running through legacy APNs.&lt;/li&gt;&lt;li&gt;Offline access – content can be stored locally to browse even when there is no signal (eg. Tube maps), data entry can be performed when required and then submitted to a server asynchronously etc.&lt;/li&gt;&lt;li&gt;Data roaming can be incredibly expensive so for content like travel guides designed to be read abroad, or interactive services for which Java can choose to use SMS instead of GPRS, there are big cost savings to be had.&lt;/li&gt;&lt;li&gt;Precise optimal rendering of certain types of content, for example barcodes (used for ticketing etc) which would be useless if the handset decided to rescale them badly as can happen when displaying MMS messages or images in browsers.&lt;/li&gt;&lt;/ul&gt;       First is the ability to do local processing and local data storage. With a thin client, modifying one item could require making several trips back to the host. And, because the bandwidth in the wireless world is so small, bringing pages down is a long, arduous task. A thick client, however, enables mobile users to work offline with the local data that is brought down; everything is done locally.&lt;br /&gt;&lt;br /&gt;       The advantage of a thick client&#39;s local processing ability can be seen when a user makes a mistake while entering data. With a thin client, the user would be prompted again, requiring another trip. With a thick client, you could use an &quot;if&quot; statement to determine if the information is correct before sending it to the host, which saves time.</description><link>http://mobility-techtips.blogspot.com/2010/05/mobile-thick-clients-vs-thin-clients.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-6629733015626258498</guid><pubDate>Wed, 12 May 2010 08:09:00 +0000</pubDate><atom:updated>2010-05-12T14:28:17.465+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Blackberry</category><category domain="http://www.blogger.com/atom/ns#">build</category><category domain="http://www.blogger.com/atom/ns#">compiler</category><category domain="http://www.blogger.com/atom/ns#">Eclipse</category><category domain="http://www.blogger.com/atom/ns#">JDE</category><category domain="http://www.blogger.com/atom/ns#">plug-in</category><category domain="http://www.blogger.com/atom/ns#">Preprocessor</category><category domain="http://www.blogger.com/atom/ns#">rapc</category><title>How To - Use the preprocessor in BlackBerry JDE</title><description>&lt;span id=&quot;support&quot;&gt;&lt;div class=&quot;pBody&quot;&gt;RIM Application Program Compiler  (RAPC) supports a few basic preprocessor directives. The directives can be used to take advantage of features available in later BlackBerry smartphones and builds without fragmenting into multiple code lines, or to make it easy to remove debug output for final versions. &lt;/div&gt;&lt;div class=&quot;pBody&quot;&gt;The following directives are supported:&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span id=&quot;support&quot;&gt;Enable the preprocessor&lt;br /&gt;    //#preprocess&lt;br /&gt;&lt;br /&gt;If, else, end if block:&lt;br /&gt;    //#ifdef &lt;tag&gt;&lt;br /&gt;         …&lt;br /&gt;    //#else&lt;br /&gt;         …&lt;br /&gt;    //#endif &lt;/tag&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span id=&quot;support&quot;&gt;If &lt;code class=&quot;cCode&quot;&gt;&lt;tag&gt; &lt;/tag&gt;&lt;/code&gt;is defined,  then the code between &lt;code class=&quot;cCode&quot;&gt;#ifdef&lt;/code&gt; and &lt;code class=&quot;cCode&quot;&gt;else&lt;/code&gt; is executed; otherwise, &lt;code class=&quot;cCode&quot;&gt;#else&lt;/code&gt; to &lt;code class=&quot;cCode&quot;&gt;#endif&lt;/code&gt; is executed. The &lt;code class=&quot;cCode&quot;&gt;else&lt;/code&gt; section is not mandatory.&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span id=&quot;support&quot;&gt;If not, else, end if block:&lt;br /&gt;    //#ifndef &lt;tag&gt;&lt;br /&gt;         …&lt;br /&gt;    //#else&lt;br /&gt;         …&lt;br /&gt;    //#endif&lt;/tag&gt;&lt;/span&gt;&lt;/blockquote&gt; &lt;span id=&quot;support&quot;&gt;&lt;div class=&quot;pBody&quot;&gt;&lt;code class=&quot;cCode&quot;&gt;#ifndef&lt;/code&gt;  is the opposite of &lt;code class=&quot;cCode&quot;&gt;#ifdef&lt;/code&gt;. If &lt;code class=&quot;cCode&quot;&gt;&lt;tag&gt;&lt;/tag&gt;&lt;/code&gt; is &lt;b class=&quot;bB&quot;&gt;not&lt;/b&gt;  defined, the code is executed.&lt;/div&gt;&lt;div class=&quot;pBody&quot;&gt;When using the BlackBerry JDE Plug-in for Eclipse or  BlackBerry JDE 4.7 and later, you can set preprocessor defines in the Project Properties window, on the Compile tab as shown in the following image:&lt;/div&gt;&lt;div class=&quot;pBody&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span id=&quot;support&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.blackberry.com/knowledgecentersupport/kmsupport/supportknowledgebase/images/DB-00712_01.jpg&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 519px; height: 428px;&quot; src=&quot;http://www.blackberry.com/knowledgecentersupport/kmsupport/supportknowledgebase/images/DB-00712_01.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;span id=&quot;support&quot;&gt;&lt;div class=&quot;pBody&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id=&quot;support&quot;&gt;&lt;div class=&quot;pBody&quot;&gt;&lt;span id=&quot;support&quot;&gt;&lt;div class=&quot;pBody&quot;&gt;If the &lt;b class=&quot;bB&quot;&gt;Preprocessor  defines &lt;/b&gt;box is not present in Eclipse®, update the BlackBerry JDE Plug-in for Eclipse to the latest available version. If you have not configured Eclipse to use the BlackBerry JDE Plug-in for Eclipse update site, this can be accomplished by following the steps found at &lt;a href=&quot;http://na.blackberry.com/eng/developers/javaappdev/javaeclipseplug.jsp&quot;&gt;http://na.blackberry.com/eng/developers/javaappdev/javaeclipseplug.jsp&lt;/a&gt;.&lt;/div&gt;&lt;div class=&quot;pBody&quot;&gt;To use the preprocessor in BlackBerry JDE prior to  version 4.7, you must manually add it to the Java® development project (JDP) file. To do this, complete the following steps:&lt;/div&gt;&lt;ol class=&quot;OrderedList&quot;&gt;&lt;div class=&quot;OrderedList1&quot;&gt;&lt;li&gt;Open the JDP file  with an editor.&lt;/li&gt;&lt;li&gt;Go to the line that starts with &lt;b class=&quot;bB&quot;&gt;Options&lt;/b&gt;. &lt;/li&gt;&lt;li&gt;At the end of the line, add &lt;b class=&quot;bB&quot;&gt;-define  &lt;tag1&gt;;&lt;tag2&gt;;…;&lt;tagn&gt;&lt;/tagn&gt;&lt;/tag2&gt;&lt;/tag1&gt;&lt;/b&gt; as in the following example: &lt;/li&gt;&lt;div class=&quot;pBody&quot;&gt;&lt;b class=&quot;bB&quot;&gt;Options=-quiet -define=FOO;PREPROCESSOR&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;pBody&quot;&gt;The &lt;code class=&quot;cCode&quot;&gt;-define&lt;/code&gt; statement is  simply an argument passed to the RAPC. Therefore, you can use it with your own command line build scripts. This functionality has been present since RAPC version 4.0.&lt;/div&gt;&lt;div class=&quot;pBody&quot;&gt;If you use the preprocessor, make sure at least one  definition is defined, typically &lt;code class=&quot;cCode&quot;&gt;PREPROCESSOR&lt;/code&gt;, or it  will not engage.&lt;/div&gt;&lt;div class=&quot;pBody&quot;&gt; &lt;/div&gt;&lt;/div&gt;&lt;/ol&gt;&lt;/span&gt; &lt;/div&gt;&lt;/span&gt;</description><link>http://mobility-techtips.blogspot.com/2010/05/how-to-use-preprocessor-in-blackberry.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-3945977976769109077</guid><pubDate>Mon, 03 May 2010 13:21:00 +0000</pubDate><atom:updated>2010-05-03T18:51:13.842+05:30</atom:updated><title>Check out AppJam: Only Apps &amp;gt;&amp;gt; Mobile Applications &amp;gt;&amp;gt; Demo of Mobile Apps &amp;gt;&amp;gt; Mobile Application Showcase event &amp;gt;&amp;gt; AppStores</title><description>Check out &lt;a href=&quot;http://gotaf.socialtwist.com///redirect?l=-426829903005482033121&quot;&gt;AppJam: Only Apps &gt;&gt; Mobile Applications &gt;&gt; Demo of Mobile Apps &gt;&gt; Mobile Application Showcase event &gt;&gt; AppStores&lt;/a&gt;</description><link>http://mobility-techtips.blogspot.com/2010/05/check-out-appjam-only-apps-mobile.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-8277670360485938595</guid><pubDate>Tue, 23 Feb 2010 05:56:00 +0000</pubDate><atom:updated>2010-02-23T11:29:03.040+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Admob</category><category domain="http://www.blogger.com/atom/ns#">Advertising</category><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">Pinch Media</category><title>Advertising on iPhone</title><description>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 11px;&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Lucida Grande&#39;; font-size: small;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 11px;&quot;&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 16px;&quot;&gt;For the most part, ads on iPhone apps seem to mimic the formats we’ve come to know via more traditional online browsing on PCs. A relatively non-intrusive banner typically shows up at the top or bottom of the open screen. (I have yet to see an app that forces a “pre-roll” ad before the app runs)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;However, with the relatively slow data transmission speeds we see on iPhones (even those lucky enough to enjoy consistent 3G connectivity) and a clunkier way of shuttling between different browser windows and applications (the iPhone does not allow apps to run in the background, so exiting an app to visit a Website will shut down the app), user engagement with ads is a far more disruptive event and much less likely to happen among those users who don’t want their workflow or play interrupted.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;Branding opportunities remain, though, especially on a new platform where novelty of the medium commands users’ attention. And hypertargeted ads tailored so well to a user’s needs might also perform well enough to cross the “interruption chasm”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;There are already several ad network/platforms available for iPhone apps. Here’s the current list of offerings:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.crispwireless.com/&quot;&gt;Crisp Wireless&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt; – currently creates banners + microsites; used by the New York Times and Washington Post apps&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.purpletalk.com/&quot;&gt;PurpleTalk&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt; – allows creation of customizable text banners; features ad exchange “Partner Network”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.apploop.com/&quot;&gt;AppLoop&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt; – claims to be the first real-time, location-based mobile advertising network&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.pinchmedia.com/&quot;&gt;Pinch Media&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt; – widely used ad network on &lt;a href=&quot;http://feeds.feedburner.com/RecentlyAddedIphoneApplications-PinchMedia&quot;&gt;dozens of iPhone apps&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.medialets.com/&quot;&gt;Medialets&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt; – offers CPM, CPC and CPA advertising run natively through iPhone apps&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.admob.com/s/solutions/iphone_about&quot;&gt;AdMob&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt; -offers rich-media (video-, map- and Apple App Store-integrated) banner ads on iPhone apps; also has an &lt;a href=&quot;http://www.techcrunch.com/2008/07/24/admob-makes-mobile-ads-suck-less-will-give-away-one-million-dollars-worth-of-ads-to-iphone-app-developers/&quot;&gt;impressive list&lt;/a&gt; of signed clients&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;Application Advertising&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The following have specific iPhone application advertising solutions for those that have created iPhone applications and wish to earn revenue by placing advertising in their iPhone application. Some of the following advertising networks are exclusively iPhone applications and others have programs for iPhone applications as well as other publisher solutions. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-bottom: 10.0pt; mso-layout-grid-align: none; mso-pagination: none; text-align: justify; text-autospace: none;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 16px;&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;How do iPhone app ads work?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;Although the solutions are different in terms of how they render in an app and what the engagement and payment models are, they typically comprise clickable banner ads, which either link to an iPhone-optimized microsite, a Web page, or, in the case of AdMob’s banners, even video, map or App Store integration.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 16px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;&lt;b&gt;For Revenue:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-left: 11.0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.medialets.com/&quot;&gt;Medialets&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;: Insert ads into your application using easy to drop in Objects, also track your users interaction with your application, earn a CPM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-left: 11.0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.admob.com/s/solutions/iphone_about&quot;&gt;AdMob&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;: Offers ads for your iPhone using Javascript” code. AdMob has been around for a while and has publisher solutions for mobile phones, not just iPhone applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-left: 11.0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.pinchmedia.com/&quot;&gt;PinchMedia&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;: Offers ads and analytics for your iPhone application, exclusively for iPhone applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;For Ad Swapping&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-left: 12.0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.purpletalk.com/&quot;&gt;PurpleTalk&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;: PurpleTalk allows you to join an advertising exchange with other iPhone developers. You earn advertising views of an advertisement for your application when you advertise others. You do not make money with these ads however it is a free way to increase the adoption of your own application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;u&gt;For Analytics&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; margin-left: 12.0pt; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.pinchmedia.com/&quot;&gt;PinchMedia&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;: Offers analytics for your iPhone application, exclusively for iPhone applications.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;As iPhone’s become more popular by the day, and applications become more widely used your application may become a nice revenue generator. Many options exist.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; text-align: justify;&quot;&gt;&lt;span style=&quot;font-family: &#39;Myriad Pro&#39;; font-size: 12pt;&quot;&gt;If you have a new application you could use the PurpleTalk code to gain free exposure and hope to increase your application adoption. Once you have gained adoption and increased usage you could add the advertising code from one of the above iPhone Publisher Networks and start earning revenue from your inventory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: 150%; text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;</description><link>http://mobility-techtips.blogspot.com/2010/02/advertising-on-iphone.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-3022437937553177556</guid><pubDate>Wed, 27 Jan 2010 05:05:00 +0000</pubDate><atom:updated>2010-02-23T11:29:52.052+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">fixing</category><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">mistakes</category><title>Top 10 mistakes in iPhone App Development</title><description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Here are top 10 mistakes I’d encourage you to avoid.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;#1 Creating an Overly Complex App&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The first app we created at Pinger was called Pinger Phone. Although this app did get into the top 100 for a short while, its main flaw was that it was way too complex. It had both a social media feed and an IM client. Those who understood it, loved it. Buy many people just didn’t get it.&lt;br /&gt;
&lt;br /&gt;
So when it comes to apps, keep it simple.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;#2 Having a Paid Only Strategy&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
There may be certain apps that don’t work well with a lite version, but I suggest you have a free and paid version if possible. You get double the possible exposure in the app store and you let users try your app before spending money on it.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;#3 Using Sub Par Graphics&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Just look at the top 100 apps. Some of the icons look like I created them (that’s not a good thing). They are blurry, unprofessional, and don’t stand out. Create the best graphics that your budget allows.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;#4 Flipping a Coin to Price your App&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The app store is a bit of a garage sale with $.99 tags on many items. Before you just go with the $.99 price, do research. What are your competitor’s apps priced at? Better to price your app a bit high to start. You can always lower the price later. One exception to this is the app Ping! Great app and great strategy. It was free for the first couple days while he marketed it into the top 100. Then he made it $.99. His strategy worked.&lt;br /&gt;
&lt;br /&gt;
So it’s not always one size fits all. Think it through.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;#5 Having No or a Last Minute Marketing Plan&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I talk to so many developers that start their marketing plan once their app has been approved. Big mistake. While you’re dreaming up your perfect app, you should make your marketing plans.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;#6 Not Tracking Everything You Can&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
At a minimum track downloads, ranking, revenue, and important changes daily. You do this to see what is driving your downloads and what is not. If you get a great review in an app review website, did it drive more downloads? If you spend money on mobile ads, how did that impact your lite and paid downloads?&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;#7 Not Being Willing to Spend Money&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
You’ve spent hours and hours building a great app. You should be willing to spend some money to promote your app. I realize it could be a waste of your precious funds, but you may also have a hit on your hands that no one ever finds out about.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;#8 Not Doing Keyword Research&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Apple gives you 100 characters to enter keyword information about your app. Do your homework. Use Google’s free keyword tool and the iPhone app store search box to figure out what keywords to use.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;#9 Not Using your Userbase&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If you’ve got a userbase when you launch your first app, announce the app to them. If you don’t, create a way to register or message your users for future updates or other app launches. Happy users you can contact are invaluable.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;#10 Not Becoming or Hiring a Marketer&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
You can’t just be a developer. You need to become a marketer. Either start learning on your own or hire someone who can help you.&lt;br /&gt;
In summary, hope this helps you avoid mistakes and have success in the app store!</description><link>http://mobility-techtips.blogspot.com/2010/01/top-10-mistakes-in-iphone-app.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-6356875719538495401</guid><pubDate>Thu, 09 Jul 2009 15:15:00 +0000</pubDate><atom:updated>2009-07-09T20:52:28.343+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">API</category><category domain="http://www.blogger.com/atom/ns#">J2ME</category><category domain="http://www.blogger.com/atom/ns#">Mobile app</category><title>APIs in J2ME</title><description>&lt;meta content=&quot;text/html; charset=utf-8&quot; equiv=&quot;Content-Type&quot;&gt;&lt;meta content=&quot;Word.Document&quot; name=&quot;ProgId&quot;&gt;&lt;meta content=&quot;Microsoft Word 11&quot; name=&quot;Generator&quot;&gt;&lt;meta content=&quot;Microsoft Word 11&quot; name=&quot;Originator&quot;&gt;&lt;link style=&quot;font-family: arial;&quot; href=&quot;file:///C:%5CDOCUME%7E1%5Ckannak%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml&quot; rel=&quot;File-List&quot;&gt;&lt;style&gt;&lt;br /&gt;&lt;!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:&quot;&quot;; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:&quot;Times New Roman&quot;; 	mso-fareast-font-family:&quot;Times New Roman&quot;;} h2 	{mso-margin-top-alt:auto; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	mso-outline-level:2; 	font-size:18.0pt; 	font-family:&quot;Times New Roman&quot;; 	font-weight:bold;} h3 	{mso-margin-top-alt:auto; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	mso-outline-level:3; 	font-size:13.5pt; 	font-family:&quot;Times New Roman&quot;; 	font-weight:bold;} p 	{mso-margin-top-alt:auto; 	margin-right:0in; 	mso-margin-bottom-alt:auto; 	margin-left:0in; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:&quot;Times New Roman&quot;; 	mso-fareast-font-family:&quot;Times New Roman&quot;;} span.mw-headline 	{mso-style-name:mw-headline;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:1627928323; 	mso-list-template-ids:1410515356;} @list l0:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:.5in; 	mso-level-number-position:left; 	text-indent:-.25in; 	mso-ansi-font-size:10.0pt; 	font-family:Symbol;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&gt;&lt;br /&gt;&lt;/style&gt;&lt;span style=&quot;font-weight: bold; font-family: arial;font-size:100%;&quot; &gt;General APIs&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;            The core APIs are defined by the underlying &lt;b&gt;Connected Limited Device Configuration&lt;/b&gt;.&lt;br /&gt;&lt;/span&gt;&lt;h3 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;javax.microedition.io&quot;&gt;&lt;/a&gt;javax.microedition.io&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;            Contains the Java ME-specific classes used for I/O operations.&lt;br /&gt;&lt;/span&gt;&lt;h3 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;javax.microedition.lcdui&quot;&gt;&lt;/a&gt;javax.microedition.lcdui&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;            Contains the Java ME-specific classes used for the GUI. LCDUI has a simple screen based approach where a single Displayable is always active at a time in the application user interface. LCDUI API provides a small set of displayables common in mobile device user interfaces: List, Alert, TextBox, Form and Canvas. For all displayables the device MIDP implementation has control over the presentation and layout of the displayable. Canvas is a low-level graphics surface for which an application has full control over what is rendered to it, although normally some space is reserved for system areas like screen title and indicators common in mobile device UIs. Since MIDP 2.0, Canvas also supports a full-screen mode that allows to make full screen graphics, which is especially useful for games.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;LCDUI also has quite unique approach of abstract operations, called Commands. The placement of commands added to a displayable is completely up to the device implementation of this toolkit. The application programmer uses API specified command types to indicate the usage or purpose of the command in application user interface. Common types are BACK, EXIT, ITEM, SCREEN. The idea of the command abstraction is to make applications more portable between various different mobile device. Application developers should use the command types properly to indicate the purpose of an operation, and device implementation then places the operation to the common location for a given type in device&#39;s specific user interface style. This may be e.g. a specific key, like &quot;a back navigation key&quot; for BACK commands or button on screen.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;            The term LCDUI was actually a joke in JCP Expert Group that created it. It has not been opened up in the MIDP specifications but stands for Limited Capability Device User Interface. The joke was that no-one else really knows what it stands for. Then later the Programming Wireless Devices with the Java 2 Platform, Micro Edition book gave this term out.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;           Other common definitions have appeared. &quot;Liquid Crystal Display User Interface&quot; would reflect the fact that mobile phones normally use LCD displays; however, the API is not specifically tailored to this particular display technology. It is also said that &quot;LCD UI&quot; stands for &quot;lowest common denominator&quot; due to the fact the specific UI has simplest possible design.&lt;br /&gt;&lt;/span&gt;&lt;h3 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;javax.microedition.rms&quot;&gt;&lt;/a&gt;javax.microedition.rms&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;           Provides a form of persistent storage for Java ME. It&#39;s like a database for the mobile device.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;&quot;Record Store&quot;(class) is used to store the Data: RecordEnumeration(Interface) , RecordComparator(Interface), RecordFilter(Interface), are used to apply user queries for sorting,filtering the data of all the data present; and comparison of contents of two or more RecordStores is done by these Interfaces.Data is stored and must be retrieved from the RecordStore using a ByteArray.(i.e; data is stored in Bytes(string.getBytes() and stored in ByteArray Byte a[])&lt;br /&gt;&lt;/span&gt;&lt;h3 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;javax.microedition.midlet&quot;&gt;&lt;/a&gt;javax.microedition.midlet&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;          Contains the base classes for Java ME applications.&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;Specialized_APIs_added_in_MIDP_2.0&quot;&gt;&lt;/a&gt;Specialized APIs added in MIDP 2.0&lt;/span&gt;&lt;/h2&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;&lt;i&gt;          MIDP 2.0&lt;/i&gt; saw the introduction of gaming and multimedia APIs and some optional packages.&lt;br /&gt;&lt;/span&gt;&lt;h3 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;javax.microedition.media&quot;&gt;&lt;/a&gt;javax.microedition.media&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;          Contains the base classes of the multimedia playback. These are approximately a subset of the JSR 135 Java Mobile Media API.&lt;br /&gt;&lt;/span&gt;&lt;h3 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;javax.microedition.lcdui.game&quot;&gt;&lt;/a&gt;javax.microedition.lcdui.game&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;          A gaming API aimed at simple 2D sprite based games.&lt;br /&gt;&lt;/span&gt;&lt;h3 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;javax.microedition.pki&quot;&gt;&lt;/a&gt;javax.microedition.pki&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;          Authenticate APIs for secure connections.&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;Optional_JSRs&quot;&gt;&lt;/a&gt;Optional JSRs&lt;/span&gt;&lt;/h2&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;          The following JSRs are not part of MIDP (1.0 or 2.0) but provide extra functionalities on some handsets. However, there is no guarantee that a MIDP2.0 handset implement such APIs&lt;br /&gt;&lt;/span&gt;&lt;h3 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;javax.microedition.messaging&quot;&gt;&lt;/a&gt;javax.microedition.messaging&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;          Wireless messaging API (optional), for sending SMS and MMS messages.&lt;br /&gt;&lt;/span&gt;&lt;h3 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;javax.microedition.pim&quot;&gt;&lt;/a&gt;javax.microedition.pim&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;          Personal information management API (optional), access the device&#39;s Address Book , to-do List, Calendar.&lt;br /&gt;&lt;/span&gt;&lt;h3 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;javax.microedition.io.file&quot;&gt;&lt;/a&gt;javax.microedition.io.file&lt;/span&gt;&lt;/h3&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;          The File Connection Optional Package (FCOP) is one of two optional packages defined by JSR 75 through the Java Community Process. The FileConnection API specified in JSR 75 gives access to the local file systems on devices like PDA. In order to overcome security issues MIDlet needs to include requested file permission in its JAD file under MIDLet-Permission property.&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;Development_Tools&quot;&gt;&lt;/a&gt;Development Tools&lt;/span&gt;&lt;/h2&gt;&lt;span style=&quot;font-family: arial;font-size:100%;&quot; &gt;          There are several different ways to create MIDP applications: Code can be written in a plain text editor, or you can use a more advanced IDE such as NetBeans, IntelliJ (with bundled Java ME plugin), or Eclipse (with plugins such as EclipseME) which has a user interface for graphically laying out any forms you create, as well as providing many other advanced features not available in a simple text editor.&lt;br /&gt;&lt;/span&gt;&lt;h2 style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;a href=&quot;http://draft.blogger.com/post-create.do&quot; name=&quot;Noteworthy_Limitations_of_MIDP_1.0&quot;&gt;&lt;/a&gt;Noteworthy Limitations of MIDP 1.0&lt;/span&gt;&lt;/h2&gt;&lt;ul style=&quot;font-family: arial;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;MIDP 1.0 has no active      rendering APIs&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;/span&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;MIDP 1.0 has no support for      direct access to image pixels (RGB data)&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;/span&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;MIDP 1.0 has no support for      full screen mode&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;/span&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;MIDP 1.0 has no support for      audio&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;/span&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;MIDP 1.0 requires only HTTP      support&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;/span&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;MIDP 1.0 cannot query key      status (although key events are supported)&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;/span&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;The specifications are not      always clear, leading to differences in implementations&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;/span&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;Some limitations may be      avoided by using a vendor-specific API or MIDP 2.0, which obviously reduces      the portability of the application&lt;/span&gt;&lt;/li&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/ul&gt;&lt;div style=&quot;font-family: arial;&quot; class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;</description><link>http://mobility-techtips.blogspot.com/2009/07/apis-in-j2me.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-8381569360031085000</guid><pubDate>Thu, 09 Jul 2009 11:36:00 +0000</pubDate><atom:updated>2010-02-23T11:30:28.170+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Samples</category><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">TableView</category><title>Spruce Up Your Table Views</title><description>&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Setting the background color of your table view is very easy.&amp;nbsp; All you need to do is set the backgroundColor property to the color you want to see.&amp;nbsp; For example, I have created a table view here in the app delegate and simply set the background property from here: &lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;blockquote style=&quot;color: purple;&quot;&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;span style=&quot;font-family: Courier;&quot;&gt;UITableViewController *tvc = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; tvc.view.backgroundColor = [UIColor redColor];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; [window addSubview:tvc.view];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; [window makeKeyAndVisible];&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Georgia; font-size: medium;&quot;&gt;If you are using sub-classing, you may also rather set this property in the initWithStyle.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Georgia; font-size: medium;&quot;&gt;You can use also an image as your background to really spice things up.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Georgia; font-size: medium;&quot;&gt;Here is that code:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote style=&quot;color: purple;&quot;&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt;UIView *backgroundView = [[UIView alloc] initWithFrame: window.frame];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; backgroundView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@&quot;TableViewBackground.png&quot;]];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; [window addSubview:backgroundView];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; [backgroundView release];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; yourTableViewController = [[ATableViewController alloc] initWithStyle:UITableViewStyleGrouped];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; yourTableViewController.view.backgroundColor = [UIColor clearColor];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; [window addSubview:yourTableViewController.view];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: medium;&quot;&gt; [window makeKeyAndVisible];&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span style=&quot;font-size: medium;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Georgia; font-size: medium;&quot;&gt;This one takes a little more code - essentially you are putting an image into a view, inserting that into the app window and then setting the background to a transparent color.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Georgia; font-size: medium;&quot;&gt;Simply setting the background color of the table view to the image would produce artifacts. &amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Georgia; font-size: medium;&quot;&gt;That is it!&amp;nbsp; I hope that this tip will add some more pizazz to your apps! &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Georgia; font-size: medium;&quot;&gt;As you can see, the this array is sorted. There you have it!&lt;/span&gt;&lt;/div&gt;</description><link>http://mobility-techtips.blogspot.com/2009/07/spruce-up-your-table-views.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-2726681172247198162</guid><pubDate>Thu, 09 Jul 2009 11:33:00 +0000</pubDate><atom:updated>2009-07-09T17:03:38.788+05:30</atom:updated><title>How To Add A Nice Background Image To Your Grouped Table View</title><description>Are you tired of your table views having the standard, boring, gray and white striped background? &lt;br /&gt;
Adding a nice image or pattern to your table views is one way of putting a little extra gloss to your UI. This is important, because gloss sells… However, if you have tried to do this yourself you already know that simply inserting an image into your table view will produce ugly artifacts.&lt;br /&gt;
&lt;br /&gt;
What you need to do is create a view with your background image and add that view to your app’s window. Then you must set the table view’s background color to “clearColor”.&lt;br /&gt;
Here is how you would do that from the app delegate:&lt;br /&gt;
&lt;blockquote style=&quot;color: purple;&quot;&gt;UIView *backgroundView = [[UIView alloc] initWithFrame: window.frame];&lt;br /&gt;
backgroundView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@&quot;TableViewBackground.png&quot;]];&lt;br /&gt;
[window addSubview:backgroundView];&lt;br /&gt;
[backgroundView release];&lt;br /&gt;
yourTableViewController = [[ATableViewController alloc] initWithStyle:UITableViewStyleGrouped];&lt;br /&gt;
yourTableViewController.view.backgroundColor = [UIColor clearColor];&lt;br /&gt;
[window addSubview:yourTableViewController.view];&lt;br /&gt;
[window makeKeyAndVisible];&lt;/blockquote&gt;&lt;code&gt;yourTableViewController&lt;/code&gt; is declared at the top level of the app delegate and &lt;code&gt;ATableViewController&lt;/code&gt; is a subclass of &lt;code&gt;UITableViewController&lt;/code&gt; that simply displays the rows and sections in the example.</description><link>http://mobility-techtips.blogspot.com/2009/07/how-to-add-nice-background-image-to.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-4658494692232898826</guid><pubDate>Thu, 25 Jun 2009 13:51:00 +0000</pubDate><atom:updated>2010-02-23T11:32:25.874+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">keyboard</category><category domain="http://www.blogger.com/atom/ns#">ViewController</category><title>iPhone SDK dismiss the keyboard</title><description>&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #555555; font-family: Verdana, &#39;BitStream vera Sans&#39;, Helvetica, sans-serif; font-size: 12px; line-height: 17px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;Set the delegate on the text field that will bring up the keyboard. Add the following selector to the object that you set to be the delegate.&lt;/div&gt;&lt;div class=&quot;wp_syntax&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: #f7f7f7; background-image: initial; background-position: initial initial; background-repeat: initial; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: auto; overflow-y: hidden; padding-bottom: 15px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 600px;&quot;&gt;&lt;div class=&quot;code&quot; style=&quot;color: #333333; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 2px; padding-left: 4px; padding-right: 4px; padding-top: 2px; vertical-align: top;&quot;&gt;&lt;pre class=&quot;cpp&quot; style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: initial; background-image: none; background-position: initial initial; background-repeat: initial; border-bottom-color: rgb(204, 204, 204); border-bottom-style: none; border-bottom-width: 1px; border-color: initial; border-left-color: rgb(204, 204, 204); border-left-style: none; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: none; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: none; border-top-width: 1px; border-width: initial; clear: none; float: none; font-family: monospace; font-size: 12px; line-height: 1.333; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: visible; overflow-y: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: auto;&quot;&gt;&lt;span style=&quot;color: #000040;&quot;&gt;
&lt;div style=&quot;color: #333333; font: 12.0px Lucida Grande; line-height: 16.0px; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;The controller&#39;s interface code&lt;/div&gt;&lt;div style=&quot;color: #c41a16; font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: #643820;&quot;&gt;#import &lt;/span&gt;&lt;uikit/uikit.h&gt;&lt;/uikit/uikit.h&gt;&lt;/div&gt;&lt;div style=&quot;font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: #aa0d91;&quot;&gt;@interface&lt;/span&gt;&lt;span style=&quot;color: #333333; font: normal normal normal 12px/normal &#39;Lucida Grande&#39;;&quot;&gt; &lt;/span&gt;MyViewController&lt;span style=&quot;color: #333333; font: normal normal normal 12px/normal &#39;Lucida Grande&#39;;&quot;&gt; &lt;/span&gt;: UIViewController &lt;uitextfielddelegate&gt; {&lt;/uitextfielddelegate&gt;&lt;/div&gt;&lt;div style=&quot;color: #5c2699; font: 10.0px Monaco; line-height: 16.0px; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: #333333; font: normal normal normal 12px/normal &#39;Lucida Grande&#39;;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #aa0d91;&quot;&gt;IBOutlet&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;UITextField&lt;span style=&quot;color: black;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color: #3f6e74;&quot;&gt;textField&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #333333; font: 12.0px Lucida Grande; line-height: 16.0px; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;color: #333333; font: 12.0px Lucida Grande; line-height: 16.0px; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;color: #aa0d91; font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;@property&lt;span style=&quot;color: black;&quot;&gt; (&lt;/span&gt;nonatomic&lt;span style=&quot;color: black;&quot;&gt;, &lt;/span&gt;retain&lt;span style=&quot;color: black;&quot;&gt;) &lt;/span&gt;&lt;span style=&quot;color: #5c2699;&quot;&gt;UITextField&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color: #3f6e74;&quot;&gt;textField&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #aa0d91; font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;@end&lt;/div&gt;&lt;div style=&quot;color: #333333; font: 12.0px Lucida Grande; line-height: 16.0px; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;And the controller&#39;s implementation code&lt;/div&gt;&lt;div style=&quot;font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: #643820;&quot;&gt;#import &lt;/span&gt;&quot;MyViewController.h&quot;&lt;span style=&quot;color: #333333; font: normal normal normal 12px/normal &#39;Lucida Grande&#39;;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #aa0d91; font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;@implementation &lt;span style=&quot;color: black;&quot;&gt;MyViewController&lt;/span&gt;&lt;span style=&quot;color: #333333; font: normal normal normal 12px/normal &#39;Lucida Grande&#39;;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #aa0d91; font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;@synthesize&lt;span style=&quot;color: black;&quot;&gt; textField;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;-(&lt;span style=&quot;color: #aa0d91;&quot;&gt;BOOL&lt;/span&gt;)textFieldShouldReturn:(&lt;span style=&quot;color: #5c2699;&quot;&gt;UITextField&lt;/span&gt; *)theTextField {&lt;/div&gt;&lt;div style=&quot;font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #aa0d91;&quot;&gt;if&lt;/span&gt; (theTextField == &lt;span style=&quot;color: #3f6e74;&quot;&gt;textField&lt;/span&gt;) {&lt;/div&gt;&lt;div style=&quot;color: #2e0d6e; font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;[&lt;/span&gt;&lt;span style=&quot;color: #3f6e74;&quot;&gt;textField&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;resignFirstResponder&lt;span style=&quot;color: black;&quot;&gt;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div style=&quot;color: #aa0d91; font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;return&lt;span style=&quot;color: black;&quot;&gt; &lt;/span&gt;YES&lt;span style=&quot;color: black;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;color: #aa0d91; font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;@end&lt;/div&gt;&lt;div style=&quot;color: #aa0d91; font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;color: #aa0d91; font: 10.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;&quot;&gt;&lt;/div&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://mobility-techtips.blogspot.com/2009/06/iphone-sdk-dismiss-keyboard.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-8002882938633680151</guid><pubDate>Thu, 11 Jun 2009 15:22:00 +0000</pubDate><atom:updated>2009-06-11T20:52:31.514+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Blackberry</category><category domain="http://www.blogger.com/atom/ns#">COD file creating</category><category domain="http://www.blogger.com/atom/ns#">Converting MIDlet</category><title>Converting a J2ME MIDlet to a BlackBerry COD</title><description>&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;Converting a J2ME MIDlet to a .COD involves the following steps:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol start=&quot;1&quot; style=&quot;margin-top: 0in;&quot; type=&quot;1&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;Download      and install the RIM Java Development Environment&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;Download      and install Java SDK&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;Copy      the jad &amp;amp; jar files in question to the /bin/ directory of your BlackBerry      JDE installation&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;From the      command line (make sure you are in the bin directory of your RIM JDE      installation) type:&lt;/li&gt;
&lt;/ol&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0.5in;&quot;&gt;rapc import=“&lt;span style=&quot;color: blue;&quot;&gt;$your_JDE_dir&lt;/span&gt;\lib\net_rim_api.jar&quot; codename=&lt;span style=&quot;color: blue;&quot;&gt;$your_app &lt;/span&gt;-midlet jad=&lt;span style=&quot;color: blue;&quot;&gt;$your_app&lt;/span&gt;.jad &lt;span style=&quot;color: blue;&quot;&gt;$your_app&lt;/span&gt;.jar&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0.5in;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0.5in;&quot;&gt;Where,&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 1in;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;$your_JDE_dir&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;- is the directory of your RIM JDE installation, &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 1in;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;$your_app&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;- is the name of the MIDlet you&#39;re trying to convert &lt;span style=&quot;color: blue;&quot;&gt;$your_app.jad&lt;/span&gt; &lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;- is the name of the MIDlet descriptor and &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0.5in; text-indent: 0.5in;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;$your_app.jar &lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;- is the name of the MIDlet jar file&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 0.5in; text-indent: 0.5in;&quot;&gt;&lt;/div&gt;&lt;ol start=&quot;5&quot; style=&quot;margin-top: 0in;&quot; type=&quot;1&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;The      following files are generated:&lt;/li&gt;
&lt;/ol&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 1in;&quot;&gt;$your_app.debug &lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 1in;&quot;&gt;$your_app.cod&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-left: 1in;&quot;&gt;&lt;/div&gt;&lt;ol start=&quot;6&quot; style=&quot;margin-top: 0in;&quot; type=&quot;1&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;$your_app.cod      is used to load the application onto the BlackBerry&lt;o:p _moz-userdefined=&quot;&quot;&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;/span&gt;&lt;o:p _moz-userdefined=&quot;&quot;&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;o:p _moz-userdefined=&quot;&quot;&gt;&amp;nbsp;To load the application onto the BlackBerry Simulator:&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;/div&gt;&lt;ul style=&quot;margin-top: 0in;&quot; type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;Launch      the BlackBerry Device Simulator by selecting &lt;b&gt;Start =&amp;gt; Research In      Motion =&amp;gt; BlackBerry JDE =&amp;gt; Device Simulator&lt;/b&gt;. &lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;Once the      simulator is loaded, install the .cod file by selecting &lt;b&gt;File =&amp;gt; Load      Java Program&lt;/b&gt; and load the $YOUR_APP.cod from $JDE/bin/&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;On the      BlackBerry Simulator desktop find your application and launch it.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://mobility-techtips.blogspot.com/2009/06/converting-j2me-midlet-to-blackberry.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-6741126337619001313</guid><pubDate>Thu, 11 Jun 2009 15:17:00 +0000</pubDate><atom:updated>2009-06-11T20:47:28.547+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Android</category><category domain="http://www.blogger.com/atom/ns#">Application Deployment</category><category domain="http://www.blogger.com/atom/ns#">Life cycle</category><category domain="http://www.blogger.com/atom/ns#">Mobile app</category><title>Android Application Lifecycle</title><description>&lt;div class=&quot;MsoNormal&quot;&gt;In Android, the applications are run as a separate Linux process. So the application lifecycle is closely related to the process lifecycle. The application process lifecycle is handled by the system depending on the current system memory state.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;In case of low memory, the Android system kills some less important process. The process importance is decided depending on the state of the process components.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;The process types depending on the importance are as follows (from most important to least important):&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;1. Foreground process:&lt;/strong&gt; A foreground process is the application process with which the user is currently interacting. The process is considered to be foreground if its Activity is at the top of the Activity stack (its onResume() has been called) or BroadcastReceiver is currently running (onReceive() method is currently getting executed) or its Service is executing callback functions like onCreate(), onStart() or onDestroy() methods.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;2. Visible Process:&lt;/strong&gt; A visible process is the process which has an Activity visible to the user (its onPause() method has been called).&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;3. Service Process:&lt;/strong&gt; Service process contains a Service for which startService method is called and the service is running.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;4. Background Process:&lt;/strong&gt; The background process does not have any visible activities to the user. (Activity onStop() method has been called).&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;strong&gt;5. Empty Process:&lt;/strong&gt; Empty process is the one that does not have any active application components. These processes are kept on for caching purpose.&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;It is important that application developers understand lifecycle of the application process. Not using these correctly can result in the system killing the application’s process while it is doing important work.&lt;/div&gt;</description><link>http://mobility-techtips.blogspot.com/2009/06/android-application-lifecycle.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-4000310562917456505</guid><pubDate>Thu, 28 May 2009 14:13:00 +0000</pubDate><atom:updated>2010-02-23T11:32:52.244+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Application Development</category><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">Objective C</category><title>The For-Each Loop in Objective-C</title><description>Loops are the gears of a &lt;br /&gt;
programming language, they help move the program to the next step.&amp;nbsp; &lt;br /&gt;
A For-Each loop is generally used when you &lt;br /&gt;
want your program to do something to a collection of objects. &lt;br /&gt;
&lt;div&gt;For example, this For-Each loop prints out each string in an&lt;/div&gt;&lt;div&gt;array of strings: &lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //For each loop&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create an array and add elements to it&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; NSMutableArray *anArray = [[NSMutableArray alloc] init];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [anArray addObject:@&quot;Element 1&quot;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [anArray addObject:@&quot;Element 2&quot;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [anArray addObject:@&quot;Element 3&quot;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Use a for each loop to iterate through the array&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (NSString *s in anArray) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NSLog(s);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //Release the array&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; [anArray release];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;  That is it!</description><link>http://mobility-techtips.blogspot.com/2009/05/for-each-loop-in-objective-c.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-4055178362680836330</guid><pubDate>Wed, 27 May 2009 09:29:00 +0000</pubDate><atom:updated>2009-05-27T14:59:52.874+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">Objective C</category><title>For Loop in Objective-C</title><description>Loops are the gears of a programming language.&lt;br /&gt;
&lt;br /&gt;
They help move the program to the next step. A For loop is generally used when you want your program to repeat an action a set number of times.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Here is the syntax for the For Loop:&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int y = 0; y &amp;lt; 3; y++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; NSLog(@&quot;y = %i&quot;, y);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt; &lt;div&gt; &lt;div&gt;That is it!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><link>http://mobility-techtips.blogspot.com/2009/05/for-loop-in-objective-c.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-6378980679578925124</guid><pubDate>Thu, 14 May 2009 11:28:00 +0000</pubDate><atom:updated>2010-02-23T11:31:54.595+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code Samples</category><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">Objective C</category><title>Sorting An Array in Objective-C</title><description>Arrays are structures used to hold a list of objects. Sometimes &lt;br /&gt;
though you may want to sort the order that the elements appear.&lt;br /&gt;
&lt;br /&gt;
Doing this is actually pretty simple once you know how, &lt;br /&gt;
essentially you will be using the NSArray sortedArrayUsingSelector &lt;br /&gt;
method.&lt;br /&gt;
&lt;br /&gt;
For example, if you create an array like so&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;color: #741b47;&quot;&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;NSMutableArray *anArray = [[NSMutableArray alloc] init];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #741b47;&quot;&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt; [anArray addObject:@&quot;B&quot;];&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;color: #741b47;&quot;&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt; [anArray addObject:@&quot;A&quot;];&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #741b47; font-family: Courier; font-size: x-small;&quot;&gt; [anArray addObject:@&quot;C&quot;];&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;and then write out the contents of the array to the log using a &lt;br /&gt;
foreach loop the results will look like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;[Session started at 2009-03-25 16:57:55 -0400.]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt; 2009-03-25 16:57:58.647 SortigArray[3403:20b] B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt; 2009-03-25 16:57:58.648 &lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;SortigArray&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;[3403:20b] A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt; 2009-03-25 16:57:58.649 &lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;SortigArray&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;[3403:20b] C&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Obviously, the contents of the array stay in the same order in &lt;br /&gt;
which they were inserted.&lt;br /&gt;
&lt;br /&gt;
What you could do is create another array, sorted, using the &lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;sortedArrayUsingSelector&lt;/span&gt; method of NSArray. Here is how: &lt;/div&gt;&lt;blockquote style=&quot;color: #741b47;&quot;&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;NSArray *sortedArray = [anArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;The odd (for some anyway) piece of this code is the &lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;@selector(caseInsensitiveCompare:) &lt;/span&gt;component of the code. This is &lt;/div&gt;a method passed to the function that instructions NSArray on how &lt;br /&gt;
to sort the array.&lt;br /&gt;
&lt;br /&gt;
At any rate, if you run through the array as before and print out &lt;br /&gt;
the results to the log you will get this:&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;[Session started at 2009-03-25 17:07:18 -0400.]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt; 2009-03-25 17:07:21.832 &lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;SortigArray&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;[3537:20b] A&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt; 2009-03-25 17:07:21.833 &lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;SortigArray&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;[3537:20b] B&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt; 2009-03-25 17:07:21.834 &lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;SortigArray&lt;/span&gt;&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;[3537:20b] C&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
As you can see, the this array is sorted. There you have it!</description><link>http://mobility-techtips.blogspot.com/2009/05/sorting-array-in-objective-c.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-2889051054318916084</guid><pubDate>Thu, 07 May 2009 12:00:00 +0000</pubDate><atom:updated>2009-05-07T17:34:25.268+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Application Deployment</category><category domain="http://www.blogger.com/atom/ns#">Coding Tips</category><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">Objective C</category><title>Adding Background Colors and Images to Your Table Views</title><description>&lt;span style=&quot;;font-family:Verdana;font-size:x-small;&quot;  &gt;Setting the background color of your table view is very easy.&lt;br /&gt;All you need to do is set the backgroundColor property to the&lt;br /&gt;color you want to see.  For example, I have created a table view&lt;br /&gt;here in the app delegate and simply set the background&lt;br /&gt;property from here:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt;UITableViewController *tvc = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; tvc.view.backgroundColor = [UIColor redColor];&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt;     &lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; [window addSubview:tvc.view];&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt;     &lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; [window makeKeyAndVisible];&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style=&quot;;font-family:Verdana;font-size:x-small;&quot;  &gt; If you are using sub-classing, you may also rather set this property in the &lt;span style=&quot;font-family:Courier;&quot;&gt;initWithStyle&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;You can use also an image as your background to really spice things up.&lt;br /&gt;&lt;br /&gt;Here is that code:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt;UIView *backgroundView = [[UIView alloc] initWithFrame: window.frame];&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; backgroundView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@&quot;TableViewBackground.png&quot;]];&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; [window addSubview:backgroundView];&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; [backgroundView release];&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; yourTableViewController = [[ATableViewController alloc] initWithStyle:UITableViewStyleGrouped];&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; yourTableViewController.view.backgroundColor = [UIColor clearColor];&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; [window addSubview:yourTableViewController.view];&lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt;     &lt;/span&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 0);font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; [window makeKeyAndVisible];&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style=&quot;;font-family:Verdana;font-size:x-small;&quot;  &gt;&lt;br /&gt;This one takes a little more code - essentially you are putting an image into a view, inserting that into the&lt;br /&gt;app window and then setting the background to a transparent color.  Simply setting the background&lt;br /&gt;color of the table view to the image would produce artifacts.&lt;br /&gt;&lt;br /&gt;That is it!  I hope that this tip will add some more pizazz to your apps!&lt;/span&gt;</description><link>http://mobility-techtips.blogspot.com/2009/05/adding-background-colors-and-images-to.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-6002373685544422239</guid><pubDate>Mon, 27 Apr 2009 11:47:00 +0000</pubDate><atom:updated>2009-04-27T17:30:36.955+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Blackberry</category><category domain="http://www.blogger.com/atom/ns#">Code Samples</category><category domain="http://www.blogger.com/atom/ns#">Coding Tips</category><category domain="http://www.blogger.com/atom/ns#">J2ME</category><category domain="http://www.blogger.com/atom/ns#">Java</category><title>General Coding Tips</title><description>&lt;p class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 12pt;&quot;&gt;&lt;span class=&quot;cm&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Avoid the Object.getClass() Method&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;cm&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;    Avoid using the Object.getClass() method, because it is not efficient and it produces garbage (the Class object) that is never collected. Also avoid using the example.class literal. Behind the scenes, this generates Class.forName(“Example”).&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;cm&quot;&gt;&lt;b&gt;Writing Efficient Loops&lt;/b&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;You should always factor loop invariant code out of a loop, as in the following example: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;    for(int i = 0; i &lt; &gt;&lt;blockquote&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;...&lt;br /&gt;&lt;br /&gt;}&lt;/blockquote&gt;&lt;/pre&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;This code results in vector.size() getting called each time through the loop, which is inefficient. If your container is likely to have more than one element, it is much faster to assign the size to a local variable. In addition, this example using pre-increment (++i) results in smaller code than post-increment (i++). The optimized code appears below: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;     int size = vector.size();&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;blockquote&gt;for(int i = 0; i &lt; style=&quot;&quot;&gt;   &lt;/span&gt;...&lt;br /&gt;}&lt;/blockquote&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Alternatively, if the order in which you iterate over items is not important, you can iterate backward. Iterating backward avoids the extra local on the stack, and the comparison is also faster, as the following example illustrates: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre style=&quot;margin-bottom: 12pt;&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;for(int i = vector.size() - 1; i &gt;= 0; --i) {&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;...&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;cm&quot;&gt;&lt;b&gt;&lt;span style=&quot;;font-family:Verdana;font-size:13;&quot;  &gt;Optimizing Subexpressions&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;    If you ever use the same expression twice, do not rely on the compiler to optimize it for you. Use a local variable, as in the following example: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;blockquote&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;one(i + 1); two(i + 1); // Avoid&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;int tmp = i + 1; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;one(tmp); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;two(tmp); // Prefer&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Avoid java.util.Enumeration&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;br /&gt;   Avoid using java.util.Enumeration unless you are using it to hide data (in other words, returning an Enumeration of data rather than the data itself). The following example shows a typical use of an Enumeration: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;blockquote&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;for (Enumeration e = v.elements(); e.hasMoreElements();) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;o = e.nextElement();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;cm&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Asking a vector or hash table for an Enumeration object creates unnecessary garbage and is slow. Instead, you can iterate over the elements yourself, as in this example: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;blockquote&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;for(int i = v.size() - 1; i &gt;=0; --i) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;o = v.elementAt(i);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;cm&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;If the vector might be modified by another thread, you must synchronize the iteration: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;blockquote&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;synchronized(v) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;for(int i = v.size() - 1; i &gt;=0; --i) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;      &lt;/span&gt;o = v.elementAt(i);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;      &lt;/span&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;cm&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;In Java 2 Platform, Standard Edition (J2SE), you would use an Iterator for this, but Iterators are not available in Java 2 Platform, Micro Edition (J2ME). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Returning null&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;br /&gt;   If you are writing a public method that returns an object, it should never return null unless the following occurs: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;a null is expected during normal program operation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;MsoNormal&quot; style=&quot;&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;the javadoc @return parameter states that null is a possible      return value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;cm&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;If a null is not normally expected, then the method should throw an appropriate exception, which forces the caller to deal with the problem explicitly. The caller is not expected to check for a null return value, unless the documentation specifies otherwise. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Passing null into Methods&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;br /&gt;   Do not pass null parameters into an API method unless the API Reference documentation explicitly states that the method supports them. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Passing null into a Constructor&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;br /&gt;   To avoid ambiguity when passing a null into a constructor, you should use this form:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;new someObject ((Object)null);&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;    &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;cm&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;A class can have two or more constructors, such as SomeObject(String) and SomeObject(Object), where passing in a null does not identify which constructor to use. As a result, the compiler reports an error. Not all supported constructors necessarily appear in the API Reference documentation, because some constructors are for internal use only. By casting the null to the appropriate object, you indicate precisely which constructor the compiler should use. This practice also ensures forward compatibility if later releases of the API add new constructors. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Optimizing Division Operations&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;br /&gt;Division operations are slow on the BlackBerry Wireless Handheld because its processor does not have a hardware divide instruction. When you write code that divides a positive number by two, you should use “shift right by one” instead. The following example illustrates this: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;midpoint = width / 2; //avoid this&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;int = width &gt;&gt; 1; //prefer this&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;cm&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;This does not work for negative values. Only use “shift right” (&gt;&gt;) when you know you are dealing with a positive value. It does not work for negative values. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Managing Garbage Collection&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;br /&gt;Avoid calling System.gc() to perform garbage collection. On a full handheld, this could take two seconds. Let the virtual machine (VM) collect garbage automatically.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Casting Using instanceof&lt;/b&gt;&lt;br /&gt;   It is more efficient to use instanceof instead of classCastException to evaluate whether a cast succeeds. Here is an example of using a try/catch block to catch the classCastException: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;blockquote&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;try {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;(String)x.whatever();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;} catch(ClassCastException e) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;// something else&lt;!--[if !supportLineBreakNewLine]--&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;cm&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Alternatively, you can use instanceof operator:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;blockquote&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;if(x instanceof String) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;(String)x.whatever();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;} else {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;span style=&quot;&quot;&gt;   &lt;/span&gt;// something else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span class=&quot;cm&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Using instanceof is faster. The only time you should use the try/catch block is when the failure of the cast is an exceptional circumstance. The BlackBerry Java Development Environment (JDE) compiler and the VM are optimized to perform only one class check in the first block of code. This is true of any code in which the cast is run immediately following a branch determined by an instanceof check. Always perform the cast immediately after the branch so that the optimization can be performed. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;Using Longs for Unique Identifiers&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;br /&gt;   You should use longs rather than strings for unique constants, such as globally unique identifiers (GUIDs), hash table keys, and state/context identifiers. So that unique identifiers remain unique across all third-party application developers, you should use randomly generated keys based on a hash of some string. In the input string, you should include enough information to make it unique. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family:Verdana;&quot;&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://mobility-techtips.blogspot.com/2009/04/general-coding-tips.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-6815875675707650396</guid><pubDate>Mon, 27 Apr 2009 11:43:00 +0000</pubDate><atom:updated>2009-04-27T17:29:45.527+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">Memory Management</category><category domain="http://www.blogger.com/atom/ns#">Objective C</category><title>Memory Management tip</title><description>&lt;span style=&quot;;font-family:Verdana;font-size:100%;&quot;  &gt; Dealing with memory on the iPhone is one of the most difficult&lt;br /&gt;challenges that you will face as a new iPhone developer.  Today,&lt;br /&gt;I am going to show you a very simple tip that will help you&lt;br /&gt;debug the memory problems that you are like to face.&lt;br /&gt;&lt;br /&gt;One thing that you have to worry about with memory management is&lt;br /&gt;the &quot;retain count&quot; of an object.  The retain count is how the&lt;br /&gt;system keeps track of the memory used by an object.  If an&lt;br /&gt;object&#39;s retain count is zero and your attempt to access it&lt;br /&gt;your app will crash; if you do not make sure the retain&lt;br /&gt;count of your object is 0 when the object goes out of focus you&lt;br /&gt;will have a memory leak.&lt;br /&gt;&lt;br /&gt;Clearly, it is important to be able to find out what the current&lt;br /&gt;retain count of an object is.  Here is how you can do this:&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;;font-family:Verdana;font-size:100%;&quot;  &gt;&lt;span style=&quot;font-family:Courier;&quot;&gt; NSLog([NSString stringWithFormat:@&quot;Retain Count:%i&quot;, [someObject retainCount]]);&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size:100%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;;font-family:Verdana;font-size:100%;&quot;  &gt; This writes out the current retain count to the log.  The&lt;br /&gt;important function is [someObject retainCount].&lt;br /&gt;&lt;/span&gt;</description><link>http://mobility-techtips.blogspot.com/2009/04/memory-management-tip.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-1526209722295627759</guid><pubDate>Fri, 24 Apr 2009 13:01:00 +0000</pubDate><atom:updated>2009-04-24T18:33:05.664+05:30</atom:updated><title>Strings in iPhone</title><description>&lt;span style=&quot;font-size:large;&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;The iPhone uses a special class called &quot;NSString&quot; to handle strings.  Here is an example of a common use of NSString.&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;div&gt; &lt;span style=&quot;;font-family:Courier;font-size:x-small;&quot;  &gt;NSString *myString = @&quot;This is my string&quot;;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;You can use an NSString object in the alert that you learned about last week.  Here is how you would use the NSString object &quot;myString&quot; in an alert:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span style=&quot;;font-family:Courier;font-size:x-small;&quot;  &gt;NSString *myString = @&quot;This is my string&quot;;&lt;br /&gt;   &lt;br /&gt;UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@&quot;UIAlertView&quot;&lt;br /&gt;                                                message:myString&lt;br /&gt;                                               delegate:self&lt;br /&gt;                                      cancelButtonTitle:@&quot;OK&quot;&lt;br /&gt;                                      otherButtonTitles:nil];&lt;br /&gt;[alert show];&lt;br /&gt;[alert release];&lt;/span&gt; &lt;/div&gt;&lt;div&gt; &lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div&gt;Notice that the &quot;message&quot; argument of the alert you created above uses the NSString object as an argument.  Another thing you will be doing with strings is combining strings to make new ones.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;For instance, if I had two strings - a first and a last name - and I wanted to create a new string for a full name I could do something like this:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span style=&quot;;font-family:Courier;font-size:x-small;&quot;  &gt;NSString *firstName = @&quot;Matt&quot;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;;font-family:Courier;font-size:x-small;&quot;  &gt;NSString *lastName = @&quot;Campbell&quot;;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;;font-family:Courier;font-size:x-small;&quot;  &gt;NSString *fullName = [NSString stringWithFormat:@&quot;My name is %@ %@&quot;,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;;font-family:Courier;font-size:x-small;&quot;  &gt;                     firstName, lastName];&lt;br /&gt; &lt;/span&gt;&lt;br /&gt;If you were to put fullName into an alert it would say &quot;My name is Matt Campbell&quot;.  How the stringWithFormat function works is that you give it a string with special symbols in it.  The function will replace the symbols with the strings in give it as the next arguments to the function.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Note that when you are using the alert object you need to follow the &quot;alloc, use, release&quot; pattern while the NSString only requires you to use the function after which you may safely forget about it.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;This has something to do with the memory management features of the iPhone.  Essentially, when you use an object&#39;s &quot;alloc&quot; you need to &quot;release&quot; at some point in the future.  NSString does not use an alloc in this instance so it does not need to be released while UIAlert does.  More details about memory management will be discussed in this mailing list in the future. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;</description><link>http://mobility-techtips.blogspot.com/2009/04/work-with-strings-in-iphone.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-7301837539104016812</guid><pubDate>Fri, 24 Apr 2009 12:59:00 +0000</pubDate><atom:updated>2009-04-24T18:33:52.169+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Alert Box</category><category domain="http://www.blogger.com/atom/ns#">iPhone</category><title>Alert box  in iPhone</title><description>&lt;span style=&quot;font-size:large;&quot;&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;;font-family:Arial;font-size:small;&quot;  &gt; An alert box is a quick way to communicate to your users.  Alert boxes look like a rounded square with a message and a button on it.  You may put this code into your project to get an alert box:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;;font-family:Arial;font-size:small;&quot;  &gt;&lt;span style=&quot;;font-family:Courier;font-size:x-small;&quot;  &gt;    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@&quot;UIAlertView&quot;&lt;br /&gt;                              message:@&quot;Hi There!&quot; delegate:self &lt;br /&gt;                              cancelButtonTitle:@&quot;OK&quot;&lt;br /&gt;                              otherButtonTitles: nil];&lt;br /&gt;   &lt;br /&gt;    [alert show];&lt;br /&gt;    [alert release];&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;;font-family:Arial;font-size:small;&quot;  &gt;&lt;span style=&quot;;font-family:Courier;font-size:x-small;&quot;  &gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;;font-family:Arial;font-size:small;&quot;  &gt;As you can see from the code above, square brackets are the order of the day in  Objective-C, the iPhone programming language.  For now, note that text that comes right after the word &quot;message:&quot;.  This is where you control what the alert box presents to the user.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;;font-family:Arial;font-size:small;&quot;  &gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;;font-family:Arial;font-size:small;&quot;  &gt;Finally, notice the overall pattern of using objects in Objective-C: alloc, &quot;do stuff&quot;, release.  This is something that you will be using often in your iPhone programming.&lt;/span&gt;&lt;/div&gt;</description><link>http://mobility-techtips.blogspot.com/2009/04/how-to-show-alert-box-in-iphone.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-1818010338500692642</guid><pubDate>Fri, 24 Apr 2009 12:55:00 +0000</pubDate><atom:updated>2009-04-24T18:25:32.665+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">iPhone</category><category domain="http://www.blogger.com/atom/ns#">Objective-C</category><title>Looping in Objective-C</title><description>&lt;h1 class=&quot;ha&quot;&gt;&lt;span class=&quot;hP&quot; id=&quot;:2be&quot;&gt;Looping in Objective-&lt;wbr&gt;&lt;/wbr&gt;C&lt;/span&gt;&lt;/h1&gt;Loops are the gears of programming: it is what makes the code take action.&amp;nbsp; The two loops I use most often is the for loop (to do a predefined number of steps) and what is usually called a foreach loop (to move though a list of objects).&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier; font-size: x-small;&quot;&gt;//This loop simply repeats an action&lt;br /&gt;
//a set amount of times:&lt;br /&gt;
for (int i=0; i&amp;lt;=3; i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;NSLog([NSString stringWithFormat:@&quot;i=%i&quot;, i]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
//Create an array of strings for the next example:&lt;br /&gt;
NSMutableArray *bunchOfThings = [[NSMutableArray alloc] init];&lt;br /&gt;
[bunchOfThings addObject:@&quot;Zero&quot;];&lt;br /&gt;
[bunchOfThings addObject:@&quot;One&quot;];&lt;br /&gt;
[bunchOfThings addObject:@&quot;Two&quot;];&lt;br /&gt;
[bunchOfThings addObject:@&quot;Three&quot;];&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
//This is sometimes called a &quot;for each&quot; loop&lt;br /&gt;
//Using this list will repeat actions for each&lt;br /&gt;
//object in a list.&lt;br /&gt;
//Hint: you can use this for any type of list of&lt;br /&gt;
//objects so if you have list of custom defined&lt;br /&gt;
//objects this is an easy way to work with them all&lt;br /&gt;
//at one time.&lt;br /&gt;
for(NSString *s in bunchOfThings)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;NSLog([NSString stringWithFormat:@&quot;s=%@&quot;, s]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;br /&gt;
//The array must be released since it was alloc/init earlier.&lt;br /&gt;
[bunchOfThings release];&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
That is it!</description><link>http://mobility-techtips.blogspot.com/2009/04/looping-in-objective-c.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-5996807726674630037.post-1544263072080945027</guid><pubDate>Wed, 24 Dec 2008 11:20:00 +0000</pubDate><atom:updated>2008-12-24T17:20:15.689+05:30</atom:updated><category domain="http://www.blogger.com/atom/ns#">Blackberry PUSH</category><category domain="http://www.blogger.com/atom/ns#">Code Samples</category><category domain="http://www.blogger.com/atom/ns#">HTTP PUSH</category><title>Pushing Web Content to BlackBerry Wireless Devices</title><description>&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Deploying and enabling a web-based application on a BlackBerry wireless device allows for reduced development time by not creating a BlackBerry application. A Browser Push differs from a BlackBerry client push application as there is no requirement to develop a client to reside on the device. There are four types of Browser Push that can be sent to the BlackBerry wireless device.&lt;br /&gt;
&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div style=&quot;margin-bottom: 0.02in;&quot;&gt;Browser Channel Push&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0.02in;&quot;&gt;Browser Channel Delete Push   &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0.02in;&quot;&gt;Browser Content Cache Push   &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0.02in;&quot;&gt;Browser Message Push &lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;h3 style=&quot;margin-bottom: 0in; margin-top: 0in;&quot;&gt;Browser Channel Push  &lt;/h3&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt; A Browser Channel Push sends a web page and two icons to the BlackBerry wireless device. The web page is stored in the cache of the BlackBerry Browser, and an icon is shown on the home screen of the device. An unread icon can be specified so that when a new Browser Channel Push arrives to the device, it will display the unread icon. After the user has opened and visited the page, the read icon is shown. This provides the user with a visual indication as to when a page has been updated. It&#39;s useful for a news service so that users are aware of when new data has arrived. The icons can even change with every push allowing an application to continually push different icons. This would be useful for a weather application updating the current weather conditions.  &lt;/div&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3 style=&quot;margin-bottom: 0in; margin-top: 0in;&quot;&gt;Browser Channel Delete Push  &lt;/h3&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt; A Browser Channel Delete works in a similar, but opposite fashion of the Browser Channel Push. It will remove an icon on the BlackBerry Home screen that has been sent via a Browser Channel Push. Icons initiating from a Browser Channel Push can also be removed from the device itself.  &lt;/div&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3 style=&quot;margin-bottom: 0in; margin-top: 0in;&quot;&gt;&lt;a href=&quot;&quot; name=&quot;Browser_Content_Cache_Push&quot;&gt;&lt;/a&gt; Browser Content Cache Push  &lt;/h3&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt; Browser Content Cache Push is the most discreet type of Browser Push. A Browser Content Push will push a web page to the BlackBerry wireless device and store it in the BlackBerry Browser&#39;s cache. The user is not informed in any way when this push takes place, or when the page has been updated.  &lt;/div&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3 style=&quot;margin-bottom: 0in; margin-top: 0in;&quot;&gt;&lt;a href=&quot;&quot; name=&quot;Browser_Message_Push&quot;&gt;&lt;/a&gt; Browser Message Push  &lt;/h3&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt; Instead of creating an icon on the home screen of the BlackBerry wireless device, a Browser Message Push will arrive in the Inbox on the device. When the user opens the message, the default browser on the device is launched then opens the page. Unlike the Browser Channel Push or Browser Content Push, the web page is stored as a browser message instead of in the BlackBerry Browser&#39;s cache. This means that the page will be available until the message is deleted. It will not be removed from the BlackBerry Browser cache when other events (browsing, cache clear) take place. The message created from a Browser Message Push is not sent to, and will not appear in, a user&#39;s Inbox on their desktop. It is sent directly to the device.  &lt;/div&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3 style=&quot;margin-bottom: 0in; margin-top: 0in;&quot;&gt;How to push  &lt;/h3&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;Push applications can be created using any development language that is able to initiate a network connection and perform an HTTP post. A post to the BlackBerry MDS Server handles the delivery of the push to a BlackBerry wireless device. The post is made up of the standard html request headers, a few unique Browser Push headers and the web page being pushed (it is not required to send the web page when performing a Browser Channel Delete Push). The following additional http request headers are required for a Browser Push to take place.&lt;br /&gt;
&lt;br /&gt;
&lt;h4 style=&quot;margin-bottom: 0in; margin-top: 0in;&quot;&gt;&amp;nbsp;&lt;/h4&gt;&lt;h4 style=&quot;margin-bottom: 0in; margin-top: 0in;&quot;&gt;Required &lt;/h4&gt;&lt;pre style=&quot;margin-left: 0.49in;&quot;&gt;X-RIM-Push-Title
X-RIM-Push-Type&lt;/pre&gt;&lt;pre style=&quot;margin-left: 0.49in;&quot;&gt;&lt;/pre&gt;&lt;h4 style=&quot;margin-bottom: 0in; margin-top: 0in;&quot;&gt;Optional &lt;/h4&gt;&lt;pre style=&quot;margin-left: 0.49in;&quot;&gt;X-RIM-Push-Channel-ID
X-RIM-Push-UnRead-Icon-URL
X-RIM-Push-Read-Icon-URL&lt;/pre&gt;&lt;pre style=&quot;margin-left: 0.49in;&quot;&gt;&amp;nbsp;&lt;/pre&gt;&quot;The X-Rim-Push-Title&quot; header holds the title that will appear on the home screen of the device for a Browser Channel Push, or in the subject of the message of a Browser Message Push. The &quot;X-RIM-Push-Type&quot; header holds the value that represents the type of push being sent. Possible values are:  &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;Browser-Channel   &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;Browser-Message   &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;Browser-Content   &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Browser-Channel-Delete   &lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;The &quot;X- RIM-Push-Channel-ID&quot; header contains the URL of the page to be pushed to the device. This is not required when performing a Browser Message or Browser Content push. The &quot;X-RIM-Push-UnRead-Icon-URL&quot; and &quot;X-RIM-Push-Read-Icon-URL&quot; are optional headers that specify the URL of the icons to be used for a Browser Channel Push. If these are not specified then the default Browser Channel Push icons are used. These two headers are not required for Browser Message, Browser Content or Browser Channel Delete Push and may be omitted.  &lt;br /&gt;
The page that is to be pushed is submitted once the headers are sent. It is recommended that this page resides on a web server, although it is not required. If it is not located on a web server, a user would be unable to refresh the page. If the page has been removed from the BlackBerry Browser cache (if a Browser Channel or Browser Content Push was used) they would be unable to view it. It is not required to send the actual page when performing a Browser Channel Delete.  &lt;br /&gt;
&lt;div style=&quot;margin-bottom: 0in;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h3 style=&quot;margin-bottom: 0.02in; margin-top: 0in;&quot;&gt;Sample Java Push Application&lt;/h3&gt;&lt;div style=&quot;margin-bottom: 0.02in;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A sample Java based push application is included and documented with the BlackBerry JDE. The BlackBerry JDE is available in the JDE installation path: &lt;b&gt;“$JDE_HOME$\samples\com\rim\samples\server\httppushdemo”&lt;/b&gt;&lt;/div&gt;&lt;h3&gt;&lt;b&gt;Sample Php Push Application&lt;/b&gt;&lt;/h3&gt;A sample php push application can be downloaded from this URL &lt;b&gt;&lt;a href=&quot;http://na.blackberry.com/eng/devjournals/resources/journals/jan_2005/phpPush.zip&quot;&gt;http://na.blackberry.com/eng/devjournals/resources/journals/jan_2005/phpPush.zip&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &lt;/b&gt;</description><link>http://mobility-techtips.blogspot.com/2008/12/pushing-web-content-to-blackberry.html</link><author>noreply@blogger.com (Kannabiran)</author><thr:total>0</thr:total></item></channel></rss>