<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='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'><id>tag:blogger.com,1999:blog-2663720003531043878</id><updated>2024-03-04T22:06:39.913-08:00</updated><category term="ASP.NET"/><category term="VB.NET"/><category term="Visual Studio"/><category term="c++"/><category term="ios"/><category term="sql"/><category term="Test"/><category term="WCF"/><category term="c#"/><category term="c++ programming"/><category term="debug"/><category term="web"/><category term=".net"/><category term="VC"/><category term="dll"/><category term="file"/><category term="framework 3.5"/><category term="solutions"/><category term="COM"/><category term="Enterprise Library"/><category term="Excel"/><category term="InvalidOperationException"/><category term="LINQ"/><category term="MFC"/><category term="Tab"/><category term="UDID"/><category term="UNICODE"/><category term="Unit testing"/><category term="VB"/><category term="VC++"/><category term="Virtual Box"/><category term="WPF"/><category term="Web service"/><category term="Windows 2003"/><category term="Windows programming"/><category term="ad-hoc"/><category term="app"/><category term="asp"/><category term="beta test"/><category term="bitbucket"/><category term="char"/><category term="core data"/><category term="datetime"/><category term="debugging"/><category term="dialog"/><category term="dot net"/><category term="exception"/><category term="git"/><category term="html"/><category term="iphone"/><category term="memory"/><category term="networking"/><category term="null"/><category term="php"/><category term="release"/><category term="side by side"/><category term="smart pointer"/><category term="sourcetree"/><category term="string"/><category term="tools"/><category term="xcode"/><category term="xml"/><title type='text'>Programming life</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>152</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-6078625271038611794</id><published>2017-03-07T22:33:00.000-08:00</published><updated>2017-03-14T05:37:55.787-07:00</updated><title type='text'>Debug Android app with adb without connect to USB cable </title><content type='html'>Sometimes, you might not be able to use the USB port for debugging your Android app. For example, you work with an app which reads from a flash memory via the USB port on the Android mobile. You have to use the Wifi instead.&lt;br /&gt;
&lt;br /&gt;
Do it in the terminal like this.&lt;br /&gt;
&lt;br /&gt;
1. Get your mobile&#39;s ip address&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$ adb shell ip addr show wlan0&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Connect to your mobile by ip. E.g. &amp;nbsp;its ip is 192.168.1.22&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$ adb connect 192.168.1.22&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;This sometimes gives connection refused error.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;Run this command then run the adb connect ipaddress command again. It should be fine.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; font-variant-ligatures: no-common-ligatures;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;adb forward tcp:5555 tcp:5555&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; background-color: #ffffff}
span.s1 {font-variant-ligatures: no-common-ligatures}
&lt;/style&gt;


&lt;br /&gt;
3. Check your devices&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$ adb devices&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
You should see two devices connected. One has a serial number and one has the ip address. Both are the same mobile.&lt;br /&gt;
&lt;br /&gt;
4. Unplug your mobile and check device one more time. You should see only one device with its ip address. Now you can begin to debug your app.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$ adb devices&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Choose the connected mobile in Android Studio and run your app. Debug information still shows on the Android monitor when you are connecting to your mobile via Wifi.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Check packages installed in the mobile:&lt;br /&gt;
&lt;br /&gt;





&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px &#39;Helvetica Neue&#39;; color: #454545}
&lt;/style&gt;


&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;$ pm list packages -f&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/6078625271038611794/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/6078625271038611794' title='1 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/6078625271038611794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/6078625271038611794'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2017/03/debug-android-app-with-adb-without.html' title='Debug Android app with adb without connect to USB cable '/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-4956671552544369741</id><published>2017-03-01T04:06:00.002-08:00</published><updated>2017-03-07T22:39:17.639-08:00</updated><title type='text'>Log library comparison</title><content type='html'>&lt;div class=&quot;p1&quot;&gt;
&lt;b&gt;Log&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul class=&quot;ul1&quot;&gt;
&lt;li class=&quot;li3&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;http://log4cpp.sourceforge.net/&quot;&gt;Log4cpp&lt;/a&gt;&lt;/span&gt;&amp;nbsp;-&amp;nbsp;A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations (LGPL). It is modeled after the&amp;nbsp;&lt;a href=&quot;http://jakarta.apache.org/log4j&quot;&gt;&lt;span class=&quot;s4&quot;&gt;Log4j&lt;/span&gt;&lt;/a&gt;&amp;nbsp;Java library&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;http://log4cpp.sourceforge.net/&quot;&gt;&lt;b&gt;http://log4cpp.sourceforge.net/&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;&lt;b&gt;.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li3&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;http://log4cpp.sourceforge.net/&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/gabime/spdlog&quot;&gt;spdlog&lt;/a&gt;&lt;/span&gt;&amp;nbsp;-&amp;nbsp;Super fast, header only, C++ logging library. Cross-platform.&lt;/li&gt;
&lt;li class=&quot;li3&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;http://log4cpp.sourceforge.net/&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://github.com/SergiusTheBest/plog&quot;&gt;plog&lt;/a&gt;&lt;/span&gt;&amp;nbsp;-&amp;nbsp;Portable and simple log for C++ in less than 1000 lines of code (MPL2)&lt;/li&gt;
&lt;li class=&quot;li3&quot;&gt;Boost - c++ library for logging is very slow (&lt;a href=&quot;http://stackoverflow.com/questions/3510473/experience-using-boost-log-logging-library&quot;&gt;&lt;span class=&quot;s1&quot;&gt;http://stackoverflow.com/questions/3510473/experience-using-boost-log-logging-library&lt;/span&gt;&lt;/a&gt;) heavy weight and just kind of complicated&lt;/li&gt;
&lt;li class=&quot;li3&quot;&gt;&lt;b&gt;G3log&lt;/b&gt; is asynchronous &quot;crash safe&quot; logger. Fatal events such as segmentation faults can be caught and before shutting down the process a stack dump is saved to your log. G3log is cross-platform and used on at least multiple Linux flavors, OSX and Windows. You will find it here: &lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://github.com/KjellKod/g3log&quot;&gt;https://github.com/KjellKod/g3log&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;It comes with a default file logging sink. More sinks are available at:&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://github.com/KjellKod/g3sinks&quot;&gt;https://github.com/KjellKod/g3sinks&lt;/a&gt;.&amp;nbsp;&lt;/span&gt;In a recent high-contention performance test g3log showed average LOG API calls of 2-3 us. Compared to another, on average faster logger, g3log showed very consistent and small worst case wait times.&amp;nbsp;&lt;a href=&quot;https://kjellkod.wordpress.com/2015/06/30/the-worlds-fastest-logger-vs-g3log/&quot;&gt;https://kjellkod.wordpress.com/2...&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;li3&quot;&gt;glog -&amp;nbsp;&lt;a href=&quot;https://github.com/google/glog&quot;&gt;https://github.com/google/glog&lt;/a&gt;&lt;/li&gt;
&lt;li class=&quot;li3&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;a href=&quot;https://github.com/SergiusTheBest/plog&quot;&gt;&lt;b&gt;SergiusTheBest/plog&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;is a very simple and elegant logging library for C++.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p13&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;b&gt;DIY&lt;/b&gt;&lt;/div&gt;
&lt;style type=&quot;text/css&quot;&gt;
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica; color: #454545}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; color: #454545; min-height: 18.0px}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #454545; min-height: 14.0px}
p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; color: #454545; min-height: 17.0px}
p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; color: #e4af09}
p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; color: #454545}
p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica; color: #454545; min-height: 19.0px}
p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Helvetica; color: #e4af09; min-height: 20.0px}
p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica; color: #e4af09}
p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; color: #e4af09}
p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Helvetica; color: #e4af09; min-height: 19.0px}
p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; color: #e4af09; min-height: 17.0px}
p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #454545}
li.li3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Helvetica; color: #454545}
span.s1 {color: #e4af09}
span.s2 {color: #454545}
span.s3 {font: 16.0px Helvetica}
span.s4 {text-decoration: underline ; color: #e4af09}
ul.ul1 {list-style-type: disc}
&lt;/style&gt;


































&lt;br /&gt;
&lt;div class=&quot;p14&quot;&gt;
If you wanted to write something faster consider your own design with a lockless cocurrent queue and a background thread to deal with the data.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;My Choice&lt;/b&gt;&lt;br /&gt;
I worked for a project and tried spdlog for logging on both iOS and Android platform. The spdlog is used inside the Djinni framework. It works very nice and easy to handle. It logs both the log file and console and supports multithread.&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/4956671552544369741/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/4956671552544369741' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/4956671552544369741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/4956671552544369741'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2017/03/log-library-comparison.html' title='Log library comparison'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-6223780255527790719</id><published>2016-07-27T11:48:00.002-07:00</published><updated>2016-07-27T11:48:55.045-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="html"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Useful tips for blogging code</title><content type='html'>I have hoped to know how to put code nicely in my blog. Now I finally get it.&lt;br /&gt;
&lt;br /&gt;
The code should be wrapped in&amp;nbsp;&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt; &amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt; block.&lt;br /&gt;
&lt;br /&gt;
If you check the html code for the following text, you can see how it is in html.&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
public void test(){&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;/pre&gt;
&lt;br /&gt;
I learned it from this webpage&amp;nbsp;&lt;a href=&quot;https://css-tricks.com/posting-code-blocks-wordpress-site/&quot;&gt;https://css-tricks.com/posting-code-blocks-wordpress-site/&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/6223780255527790719/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/6223780255527790719' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/6223780255527790719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/6223780255527790719'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/07/useful-tips-for-blogging-code.html' title='Useful tips for blogging code'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-9168585433361733624</id><published>2016-07-26T22:14:00.000-07:00</published><updated>2016-07-26T22:14:04.306-07:00</updated><title type='text'>Now it is time for Firebase</title><content type='html'>Firebase comes! I tried it and find it is quite handy to use. I put two tutorials about sending push notifications with Firebase for Android on CodeMentor here.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.codementor.io/android/tutorial/send-push-notifications-to-android-with-firebase&quot;&gt;https://www.codementor.io/android/tutorial/send-push-notifications-to-android-with-firebase&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://www.codementor.io/android/tutorial/send-push-notifications&quot;&gt;https://www.codementor.io/android/tutorial/send-push-notifications&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/9168585433361733624/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/9168585433361733624' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/9168585433361733624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/9168585433361733624'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/07/now-it-is-time-for-firebase.html' title='Now it is time for Firebase'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-7140454928785244091</id><published>2016-05-18T22:20:00.000-07:00</published><updated>2016-05-18T22:20:00.554-07:00</updated><title type='text'>How to select a row automatically in UITableView</title><content type='html'>Sometimes you need to use UISplitterViewController which has one menu on the left and one detail view on the right. Both are tableviewcontrollers. Then you might want to select the first cell on the left hand automatically.&lt;br /&gt;
&lt;br /&gt;
This code can help you to select the first menu cell. From&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/2728152/select-first-row-as-default-in-uitableview&quot;&gt;http://stackoverflow.com/questions/2728152/select-first-row-as-default-in-uitableview&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;default prettyprint prettyprinted&quot; style=&quot;background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;&quot;&gt;&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;- (&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;)viewDidAppear:(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;BOOL&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;)animated {&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;viewDidAppear&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;:animated];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;IS_IPAD&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;){&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;NSIndexPath&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; *indexPath=[&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;NSIndexPath&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;indexPathForRow&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;inSection&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s7&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;tableView&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;selectRowAtIndexPath&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;:indexPath &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;animated&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;YES&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;scrollPosition&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;UITableViewScrollPositionBottom&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s7&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;performSegueWithIdentifier&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s8&quot;&gt;@&quot;menuToDetail&quot;&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;sender&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;pre class=&quot;default prettyprint prettyprinted&quot; style=&quot;background-color: white; border: 0px; color: #393318; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;courier new&amp;quot; , monospace , sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;&quot;&gt;I added the code from the suggestion in the Stackoverflow and added perform segue to the detailView. Then it worked with&lt;/pre&gt;
&lt;pre class=&quot;default prettyprint prettyprinted&quot; style=&quot;background-color: white; border: 0px; color: #393318; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;courier new&amp;quot; , monospace , sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;&quot;&gt;showing things correctly. Remember that you must check if it is on the iPad because&lt;/pre&gt;
&lt;pre class=&quot;default prettyprint prettyprinted&quot; style=&quot;background-color: white; border: 0px; color: #393318; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;courier new&amp;quot; , monospace , sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;&quot;&gt;this crashes your iPhone version since the splitterview is not used in the iphone&amp;nbsp;&lt;/pre&gt;
&lt;pre class=&quot;default prettyprint prettyprinted&quot; style=&quot;background-color: white; border: 0px; color: #393318; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;courier new&amp;quot; , monospace , sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;&quot;&gt;version.&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/7140454928785244091/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/7140454928785244091' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/7140454928785244091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/7140454928785244091'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/05/how-to-select-row-automatically-in.html' title='How to select a row automatically in UITableView'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-1384405563034700617</id><published>2016-04-28T22:27:00.002-07:00</published><updated>2016-04-28T22:27:50.255-07:00</updated><title type='text'>Lessons Learned for Android App Release</title><content type='html'>Yesterday I had a lot of problem with release an update to my app &lt;a href=&quot;https://play.google.com/store/apps/details?id=se.gso.play&quot; target=&quot;_blank&quot;&gt;GSOplay&lt;/a&gt;.&lt;br /&gt;
It was tedious but I have got some more experience with releasing an Android app.&lt;br /&gt;
&lt;br /&gt;
1. &lt;b&gt;Always Check &quot;Supported Android devices&quot;&lt;/b&gt;&lt;br /&gt;
When uploading an APK, it is very important to click the &quot;APK details&quot; before clicking &quot;Publish&quot; button. Here you must check if the &quot;supported devices&quot; is more than 0. If it is 0, don&#39;t publish it. Otherwise, the app will disappear in the Google Play Store.&lt;br /&gt;
The reason of &quot;supported Android devices&quot; 0 can be that you use a library which is not accepted as a library for mobile apps. For example, if you have apache.common.io library in your gradle file, it will make &quot;Supported Android devices&quot; to be 0, which is not what we want.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1v4OI5G3YZR_1fez5fEpQWSfj4KuZWuw4vx7xDbSSucqiBZsAvISmiWTTT2BIpYb2QPwbSQ7Uz3dw7bcFbnNWyLOmS6b016Jekzb4Mg4ueHFxqG6M8E4P9l7BvPzGygOTWBbuHqyHtBeY/s1600/Screen+Shot+2016-04-29+at+07.04.05.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;147&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1v4OI5G3YZR_1fez5fEpQWSfj4KuZWuw4vx7xDbSSucqiBZsAvISmiWTTT2BIpYb2QPwbSQ7Uz3dw7bcFbnNWyLOmS6b016Jekzb4Mg4ueHFxqG6M8E4P9l7BvPzGygOTWBbuHqyHtBeY/s320/Screen+Shot+2016-04-29+at+07.04.05.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
2. &lt;b&gt;Error happens, but what is the error?&lt;/b&gt;&lt;br /&gt;
If you get a warning when uploading an apk file, saying that error happens without marking any error in the uploading form. Do like this: click button &quot;Save as draft&quot; beside the &quot;Publish&quot; button. Then the error will show up.&lt;br /&gt;
&lt;br /&gt;
3. &lt;b&gt;targetSdkVersion&lt;/b&gt;&lt;br /&gt;
The latest release cannot have a targetSdkVersion which is lower than previous versions. If you have version 1.5 with targetSdkVersion 23 and want to upload version 1.6 with targetSdkVersion 19. You will fail when publishing the app. The targetSdkVersion in the latest version should always &amp;gt;= the targetSdkVersion in previous versions.&lt;br /&gt;
&lt;br /&gt;
4. &lt;b&gt;Google Play Store Releasing Time&lt;/b&gt;&lt;br /&gt;
After you have uploaded an update of your app to the Play Store, it takes time to update the app in the Play Store. So it doesn&#39;t show a new version directly. Even sometimes it takes only some minutes to see the new version in the Play Store. Most time it doesn&#39;t update so fast. Sometime the console can show that the update is submitted. But the Play Store still shows the earlier version. Don&#39;t panic. It needs time to sync everything. Have a break for half a day or just go to sleep. The app will be there finally.&lt;br /&gt;
&lt;br /&gt;
5. &lt;b&gt;Worst Scenario&lt;/b&gt;&lt;br /&gt;
Things sometimes don&#39;t go smoothly. Sometimes it just doesn&#39;t work well. Do this:&lt;br /&gt;
&lt;br /&gt;
Step 0: Be calm. Have a deep breath. Believe that everything can be solved.&lt;br /&gt;
&lt;br /&gt;
Step 1: If this is a custom-made app, call your customer that there is some issue with the app release and describe the situation to get understanding.&lt;br /&gt;
&lt;br /&gt;
Step 2: Google the problem that you have accoutered and see if there is similar problem and the solution.&lt;br /&gt;
&lt;br /&gt;
Step 3: If it still does not work, report to Google about the problem and try to get help.&lt;br /&gt;
&lt;a href=&quot;https://www.blogger.com/goog_336387015&quot;&gt;&lt;br /&gt;&lt;/a&gt;
&lt;a href=&quot;https://support.google.com/googleplay/android-developer/troubleshooter/3055196?hl=en&quot;&gt;https://support.google.com/googleplay/android-developer/troubleshooter/3055196?hl=en&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://support.google.com/googleplay/android-developer/contact/publishing?extra.IssueType=missing&quot; target=&quot;_blank&quot;&gt;https://support.google.com/googleplay/android-developer/contact/publishing?extra.IssueType=missing&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
That&#39;s all I have learning with my app release yesterday. Hope it will be helpful for you.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/1384405563034700617/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/1384405563034700617' title='1 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1384405563034700617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1384405563034700617'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/04/lessons-learned-for-android-app-release.html' title='Lessons Learned for Android App Release'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1v4OI5G3YZR_1fez5fEpQWSfj4KuZWuw4vx7xDbSSucqiBZsAvISmiWTTT2BIpYb2QPwbSQ7Uz3dw7bcFbnNWyLOmS6b016Jekzb4Mg4ueHFxqG6M8E4P9l7BvPzGygOTWBbuHqyHtBeY/s72-c/Screen+Shot+2016-04-29+at+07.04.05.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-4094963640386742531</id><published>2016-04-28T09:28:00.001-07:00</published><updated>2016-04-28T09:29:43.246-07:00</updated><title type='text'>The biggest panic today - Supported device 0 !!!</title><content type='html'>It is always like taking roller-coaster when developing Android apps. This is quite unfortunate for an app developer. Specially at a gray rainy day today, slept badly, caught a cold, quarreled with my kid because he didn&#39;t want to go to school this morning and had a user complaining his app not working.&lt;br /&gt;
After all the troubles, I got the problem - &quot;&lt;b&gt;Supported device 0&lt;/b&gt;&quot; in publishing Android app in production, which just became the last straw that almost broke my heart and nerve.&lt;br /&gt;
&lt;br /&gt;
No complain when I made an APK file in Android Studio and publish it. But when I checked the Google Play Store to find the updated app, I couldn&#39;t find it! In all my Android devices! Then when I came back to the console for Production, I found the information about 0 supported device.&lt;br /&gt;
&lt;br /&gt;
One more time Stack Overflow saved my life.&lt;br /&gt;
&lt;br /&gt;
I found the solution:&lt;br /&gt;
This line in my build.gradle is the &lt;i&gt;&lt;u&gt;killer&lt;/u&gt;&lt;/i&gt;.&lt;br /&gt;
&lt;pre class=&quot;default prettyprint prettyprinted&quot; style=&quot;background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;&quot;&gt;&lt;code style=&quot;border: 0px; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;border: 0px; color: #303336; margin: 0px; padding: 0px;&quot;&gt;compile &lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;border: 0px; color: #7d2727; margin: 0px; padding: 0px;&quot;&gt;&#39;org.apache.directory.studio:org.apache.commons.io:2.4&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
So I removed it , recompiled my apk and uploaded to Google again. Now it supports all the devices.&lt;br /&gt;
&lt;br /&gt;
I just wonder how come this cannot be found during compilation. If Android Studio doesn&#39;t accept apache.commons library, why not just warning at the very beginning? It is such a waste of time to troubleshoot it. And I am sure that I am not the last developer who get such problem.&lt;br /&gt;
&lt;br /&gt;
After all these struggle, I guess I am closer to an iron woman.&lt;br /&gt;
&lt;br /&gt;
Reference:&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/33308560/supported-android-devices-0-devices&quot;&gt;http://stackoverflow.com/questions/33308560/supported-android-devices-0-devices&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/4094963640386742531/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/4094963640386742531' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/4094963640386742531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/4094963640386742531'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/04/the-biggest-panic-today-supported.html' title='The biggest panic today - Supported device 0 !!!'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-918638423907296260</id><published>2016-04-10T21:48:00.004-07:00</published><updated>2016-04-11T00:29:48.358-07:00</updated><title type='text'>The biggest headache from Android SDK 23.2.0</title><content type='html'>I have worked hours for solving a crash problem for my Android app. My app works fine in Android 5.1 devices but not 4.4.&lt;br /&gt;
&lt;br /&gt;
The error is like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;i&gt;android.view.InflateException: Binary XML file line #36: Error inflating class android.support.v7.widget.Toolbar&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;i&gt;&amp;nbsp;...&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;i&gt;







&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;i&gt;Caused by: android.view.InflateException: Binary XML file line #36: Error inflating class android.support.v7.widget.Toolbar&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;i&gt;....&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;i&gt;Caused by: android.content.res.Resources$NotFoundException: File res/drawable-v19/abc_ic_ab_back_material.xml from drawable resource ID #0x7f02001c&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
I struggled a lot with the theme. Finally, I found out that it is something that should be changed in gradle when you update to Android SDK 23.2.0.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white; color: #3a4145; font-family: Merriweather, serif; font-feature-settings: &#39;liga&#39; 1, &#39;onum&#39; 1, &#39;kern&#39; 1; font-size: 18px; letter-spacing: 0.1px; line-height: 31.5px; margin-bottom: 1.75em; text-rendering: geometricPrecision;&quot;&gt;
&amp;nbsp;This can be fixed by change the settings in Gradle, depending on the Gradle version you use. For the new, 2.0 Gradle plugin it is a one liner:&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 250, 251); border-radius: 3px; border: 1px solid rgb(227, 237, 243); box-sizing: border-box; color: #3a4145; font-family: Inconsolata, monospace, sans-serif; font-size: 0.9em; letter-spacing: 0.1px; line-height: 31.5px; margin-bottom: 1.75em; overflow: auto; padding: 10px; width: 710px;&quot;&gt;&lt;code style=&quot;background: transparent; border-radius: 2px; border: none; font-family: Inconsolata, monospace, sans-serif; font-size: inherit; padding: 0px; white-space: pre-wrap;&quot;&gt;// Gradle Plugin 2.0+  
 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 } 
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: white; color: #3a4145; font-family: Merriweather, serif; font-feature-settings: &#39;liga&#39; 1, &#39;onum&#39; 1, &#39;kern&#39; 1; font-size: 18px; letter-spacing: 0.1px; line-height: 31.5px; margin-bottom: 1.75em; text-rendering: geometricPrecision;&quot;&gt;
And for Gradle version 1.5 (there is no such fix for older Gradle versions):&lt;/div&gt;
&lt;pre style=&quot;background: rgb(247, 250, 251); border-radius: 3px; border: 1px solid rgb(227, 237, 243); box-sizing: border-box; color: #3a4145; font-family: Inconsolata, monospace, sans-serif; font-size: 0.9em; letter-spacing: 0.1px; line-height: 31.5px; margin-bottom: 1.75em; overflow: auto; padding: 10px; width: 710px;&quot;&gt;&lt;code style=&quot;background: transparent; border-radius: 2px; border: none; font-family: Inconsolata, monospace, sans-serif; font-size: inherit; padding: 0px; white-space: pre-wrap;&quot;&gt;// Gradle Plugin 1.5  
 android {  
   defaultConfig {  
     generatedDensities = []  
  }  

  // This is handled for you by the 2.0+ Gradle Plugin  
  aaptOptions {  
    additionalParameters &quot;--no-version-vectors&quot;  
  }  
 } &lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&amp;nbsp;This link has detailed description&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.autsoft.hu/do-this-when-upgrading-to-support-library-23-2/&quot;&gt;http://blog.autsoft.hu/do-this-when-upgrading-to-support-library-23-2/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
But I have to say that the biggest headache reveals the big change in Android SDK for dealing with images. After&amp;nbsp;&lt;span style=&quot;background-color: #f9f9f9; color: #333333; font-family: Roboto; font-size: 13.2px; line-height: 18.48px;&quot;&gt;&lt;b&gt;Lollipop&lt;/b&gt;&lt;/span&gt;&amp;nbsp;you can use &lt;b&gt;vector&lt;/b&gt; images in an Android app! That&#39;s so great!&lt;br /&gt;
&lt;a href=&quot;http://android-developers.blogspot.se/2016/02/android-support-library-232.html#uds-search-results&quot;&gt;http://android-developers.blogspot.se/2016/02/android-support-library-232.html#uds-search-results&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/918638423907296260/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/918638423907296260' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/918638423907296260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/918638423907296260'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/04/the-biggest-headache-from-android-sdk.html' title='The biggest headache from Android SDK 23.2.0'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-1859739128187051488</id><published>2016-04-05T07:19:00.001-07:00</published><updated>2016-04-10T21:49:47.007-07:00</updated><title type='text'>Save styled receiver on google drive</title><content type='html'>&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;When I work with styled receiver for Chromecast, I had some failure and success. So I share my experience here.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;It is boring to use the ready made style for Chromecast receiver, which only shows the name of your app and dark background. So it is good to upload your own style.css for your receiver. This link is configured under your cast app at the&amp;nbsp;https://cast.google.com/.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;However, google doesn&#39;t give you a host automatically at the cast.google.com. You need to save all the files - style.css and its relevant files in a Https server. If you&amp;nbsp;have not a https server, a good solution is to use drive.google.com but it is a little tedious.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
Remember the baseline : all the files - images, html, css, js files must use absolute links which starts with &quot;https://&lt;b&gt;www.googledrive.com/host/&quot;&lt;/b&gt;.&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
Now let&#39;s go to the Google Drive and create a folder A for your files.&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
Step 1. Upload the images files (background.png, logo.png, splash.png ...) to the folder A in your Google drive. Click &quot;share&quot; to get the link of each image file like &quot;https://drive.google.com/open?id=XXXXXXXX&quot;. Here you need to share the file as public and anyone can view it.&lt;br /&gt;
Copy the id and put it into this link like this &quot;https://&lt;b&gt;www.googledrive.com/host/&lt;/b&gt;XXXXXXXX&quot;. This link is the absolute link that you will be able to reach from the style.css file. This is very important. Forget all the extra stuff that you get from the shared link in Google Drive. Only use the &lt;b&gt;id&lt;/b&gt; at the last part of the link.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Step 2. Put the absolute links into the style.css file. Its content should look like this&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
.background {&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&amp;nbsp; background: center no-repeat url(https://www.googledrive.com/host/FDAFEHHHTTFEFE);&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
}&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
.logo {&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&amp;nbsp; background-image: url(https://www.googledrive.com/host/FADFEEADFEFFF);&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
}&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
.progressBar {&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&amp;nbsp; background-color: #A0000F;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
}&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
.splash {&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&amp;nbsp; background-image: url(https://www.googledrive.com/host/ZDFDFDEFAFAFE);&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
}&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Step 3. Then publish the style.css file on drive.google.com.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Step 4. Do the same change for the link of the style.css file. Here you need to share the file as public and anyone can view it. More details is on the following link.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;Reference :&amp;nbsp;&lt;a href=&quot;https://support.google.com/drive/answer/2881970?hl=en&quot;&gt;https://support.google.com/drive/answer/2881970?hl=en&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
Step 5. Now you can use the link of the style.css for your app at the https://cast.google.com/.&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
Now you can run your app and see if the interface on the TV is changed. Notice: any newly registered cast app won&#39;t work at once. You have to wait some hours for the new cast app to work. But if you already have one styled receiver app registered, you can test it directly. If no updates are shown, you can restart your Chromecast device with Google Cast app installed on your mobile.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/1859739128187051488/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/1859739128187051488' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1859739128187051488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1859739128187051488'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/04/save-styled-receiver-on-google-drive.html' title='Save styled receiver on google drive'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-1396826349387156558</id><published>2016-03-04T12:51:00.002-08:00</published><updated>2016-03-04T12:51:45.559-08:00</updated><title type='text'>Checklist before release iOS app</title><content type='html'>It has been some months since I uploaded a completely new app. Tonight I struggled a lot with different problem during release of an iPad app.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgktHBoa1K_dpu8qb4S9ozyElNAMQ83mTQERxLKsPqB9rA1mcw24_sagvaW8Z9cY57xfljVO32xC14xbwQB6aR4rOhvGq8CzEJa8NVVfH7jt7_L7ku0Xc-_22S3inkhf5F2EKHUbtYH04ik/s1600/error.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;192&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgktHBoa1K_dpu8qb4S9ozyElNAMQ83mTQERxLKsPqB9rA1mcw24_sagvaW8Z9cY57xfljVO32xC14xbwQB6aR4rOhvGq8CzEJa8NVVfH7jt7_L7ku0Xc-_22S3inkhf5F2EKHUbtYH04ik/s320/error.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
After I struggled for some time, I found out that I forgot to add a new app in &quot;My Apps&quot; in my member center. What a miss! Then got some other problems so I put them here to make the next release more correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. Add a new app in the member center in developer.apple.com&lt;br /&gt;
&lt;br /&gt;
2. In your XCode project&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Make icon images and add them in the asset in the project. (Notice, TV apps need even more images - large icon, small icon, top shelf image, launch image. Specially, top shelf image must has its alpha channel turned off. This can be done with Preview. )&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUWK8BlLbsIV9H9OvRqH5df30xANCfv41e9Z8Z8qrn8qKV_V_DJZ39H9EGFROt4Q6FpL72oJCx2yOoRX2Yj9kwAHTVWOe0_bzEu4HIemLn_7RSmmH4cfbCMh1-MXfEwPlLMM3M-gg-mZtO/s1600/Screen+Shot+2016-03-04+at+21.42.11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;70&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUWK8BlLbsIV9H9OvRqH5df30xANCfv41e9Z8Z8qrn8qKV_V_DJZ39H9EGFROt4Q6FpL72oJCx2yOoRX2Yj9kwAHTVWOe0_bzEu4HIemLn_7RSmmH4cfbCMh1-MXfEwPlLMM3M-gg-mZtO/s320/Screen+Shot+2016-03-04+at+21.42.11.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;Add one key in info.plist&amp;nbsp;&lt;b&gt;UIRequiresFullScreen&lt;/b&gt; and make it &lt;b&gt;YES&lt;/b&gt;. (This will remove possible error - iPad multitasking support requires three orientations during archiving)&lt;/li&gt;
&lt;li&gt;Add one key in info.plist&amp;nbsp;&lt;b&gt;ITSAppUsesNonExemptEncryption &lt;/b&gt;and make it &lt;b&gt;NO. &lt;/b&gt;Otherwise, even you can upload it to the App Store, still they tell you go back and add this key :( This is new requirement as far as I know. It was ok to answer encryption related question when configuring apps in the web page last year. Today is 2016-3-4.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
This is what I learned in 2 hours at a Friday night - by a tired app developer.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/1396826349387156558/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/1396826349387156558' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1396826349387156558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1396826349387156558'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/03/checklist-before-release-ios-app.html' title='Checklist before release iOS app'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgktHBoa1K_dpu8qb4S9ozyElNAMQ83mTQERxLKsPqB9rA1mcw24_sagvaW8Z9cY57xfljVO32xC14xbwQB6aR4rOhvGq8CzEJa8NVVfH7jt7_L7ku0Xc-_22S3inkhf5F2EKHUbtYH04ik/s72-c/error.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-5082819900116926067</id><published>2016-02-25T01:15:00.000-08:00</published><updated>2016-02-25T01:15:02.567-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="solutions"/><title type='text'>Images can&#39;t contain alpha channels or transparencies - for iOS release</title><content type='html'>This error happens so often and I just need to put it in my blog to remember it.&lt;br /&gt;
&lt;br /&gt;
When I upload an iOS app to the App Store, this always jump out because the app icon image that I use is png image with transparency. The error can extend even more when I develop TV apps because the &quot;Top Shelf Image&quot; requires also an image with NO transparency.&lt;br /&gt;
&lt;br /&gt;
The simplest way is to use jpg. But due to the loss of image quality of jpg format, it might be safer to use a png image without transparency. For Mac users, the easiest way is to re-export the png&#39;s in Preview, but uncheck the Alpha checkbox when saving.&lt;br /&gt;
&lt;br /&gt;
The credit goes to&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/users/334296/smikey&quot; style=&quot;background-color: white; border: 0px; color: #0077cc; cursor: pointer; font-family: Arial, &#39;Helvetica Neue&#39;, Helvetica, sans-serif; font-size: 13px; line-height: 17px; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;Smikey&lt;/a&gt;&amp;nbsp;at&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/25681869/images-cant-contain-alpha-channels-or-transparencies&quot;&gt;http://stackoverflow.com/questions/25681869/images-cant-contain-alpha-channels-or-transparencies&lt;/a&gt;. Thanks for the solution!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/5082819900116926067/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/5082819900116926067' title='1 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/5082819900116926067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/5082819900116926067'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/02/images-cant-contain-alpha-channels-or.html' title='Images can&#39;t contain alpha channels or transparencies - for iOS release'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-5602964213496173125</id><published>2016-02-24T23:31:00.002-08:00</published><updated>2016-02-25T01:15:33.902-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ios"/><category scheme="http://www.blogger.com/atom/ns#" term="solutions"/><title type='text'>New problem in releasing and solution - for iOS apps</title><content type='html'>This morning a new problem came when I tried to upload a TV app to the App Store. The error message is &quot;Missing iOS Distribution signing identity for xxxx&quot;.&lt;br /&gt;
&lt;br /&gt;
I thought that it is because I made some provision profile messy. But it wasn&#39;t. Apple&#39;s&amp;nbsp;&lt;a href=&quot;https://developer.apple.com/certificationauthority/AppleWWDRCA.cer&quot; style=&quot;background-color: cornsilk; border: 0px; color: #005999; cursor: pointer; font-family: Arial, &#39;Helvetica Neue&#39;, Helvetica, sans-serif; font-size: 15px; line-height: 13px; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;WWDR intermediate certificate&lt;/a&gt;&amp;nbsp;which became expired. So it is simple to solve it.&lt;br /&gt;
&lt;br /&gt;
1. In the Key Chain Access,&amp;nbsp;&lt;span style=&quot;background-color: white; color: #222426; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px; line-height: 13px;&quot;&gt;View-&amp;gt;Show Expired Certificates,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222426; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px; line-height: 13px;&quot;&gt;then System-&amp;gt;All Items. Find the &quot;Apple Worldwide Developer Relations Certification Authority&quot;. Check the expiration time. If it is expired, delete it.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #222426; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px; line-height: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; color: #222426; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px; line-height: 13px;&quot;&gt;2.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #222426; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px; line-height: 13px;&quot;&gt;&amp;nbsp;Download&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://developer.apple.com/certificationauthority/AppleWWDRCA.cer&quot; style=&quot;background-color: white; border: 0px; color: #005999; cursor: pointer; font-family: Arial, &#39;Helvetica Neue&#39;, Helvetica, sans-serif; font-size: 15px; line-height: 13px; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;https://developer.apple.com/certificationauthority/AppleWWDRCA.cer&lt;/a&gt;&lt;span style=&quot;background-color: white; color: #222426; font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: 15px; line-height: 13px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
3. Install the new certificate and then all the problems are gone!&lt;/div&gt;
&lt;br /&gt;
I found the solution here and inspired by&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/users/4077989/teja-kumar-bethina&quot; style=&quot;background-color: white; border: 0px; color: #33aaff; cursor: pointer; font-family: Arial, &#39;Helvetica Neue&#39;, Helvetica, sans-serif; font-size: 13px; line-height: 17px; margin: 0px; padding: 0px; text-decoration: none;&quot;&gt;Teja Kumar Bethina&lt;/a&gt;:&lt;br /&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/32821189/xcode-7-error-missing-ios-distribution-signing-identity-for&quot;&gt;http://stackoverflow.com/questions/32821189/xcode-7-error-missing-ios-distribution-signing-identity-for&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/5602964213496173125/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/5602964213496173125' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/5602964213496173125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/5602964213496173125'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/02/new-problem-in-releasing-and-solution.html' title='New problem in releasing and solution - for iOS apps'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-1466285070619922123</id><published>2016-01-28T23:40:00.001-08:00</published><updated>2016-01-28T23:40:34.180-08:00</updated><title type='text'>Worst news ever- Parse is dead</title><content type='html'>This is a shocking news. Parse will end its service on 28 Jan 2017. I saw this news when I woke up this morning and checked my email in my bed. This news made me awake at once and called my partner in my company.&lt;br /&gt;
I have several apps using Parse service. It is so convenient and nice to save a lot of time in development. I am so grateful that I hope to pay for the service. But it is too generous that it cannot afford its own expense. I am so sad to get the news. Why can&#39;t Facebook just let others to buy it or begin to change the pricing solution? It is so cruel to stop a service like this. Ok, it is good to let us know one year ahead. But anyway, I cannot find a better service than Parse in the world. Even I would like to pay for such a service.&lt;br /&gt;
&lt;br /&gt;
From today it is time to only rely on myself - make my own backend and never rely on any other service.&lt;br /&gt;
&lt;br /&gt;
Just have to mourn for Parse in this dark rainy Friday.</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/1466285070619922123/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/1466285070619922123' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1466285070619922123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1466285070619922123'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/01/worst-news-ever-parse-is-dead.html' title='Worst news ever- Parse is dead'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-413599372830903678</id><published>2016-01-24T08:57:00.001-08:00</published><updated>2016-01-24T08:58:37.807-08:00</updated><title type='text'>My Course about Google In-app Billing is in PluralSight now!</title><content type='html'>My Course about Google In-app Billing is in PluralSight now! It took me a lot of time to develop this course. &amp;nbsp;If you work with Android app and are curious about Google In-app Billing, please check my course here.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf-2-8jMndNtVyS37XfIkAYXad2WnGQ0eIN_FoxKQmpir269rBjYcFDvkwnKNoVLaSS-8dtw7rZcGI2AhM2yOwsurIURY9u-TiK6VlhfNLXHuzJGCxtMLzw8JVMhMow8HrHFhPwvx5sNSW/s1600/Screen+Shot+2016-01-24+at+17.57.44.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;217&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf-2-8jMndNtVyS37XfIkAYXad2WnGQ0eIN_FoxKQmpir269rBjYcFDvkwnKNoVLaSS-8dtw7rZcGI2AhM2yOwsurIURY9u-TiK6VlhfNLXHuzJGCxtMLzw8JVMhMow8HrHFhPwvx5sNSW/s320/Screen+Shot+2016-01-24+at+17.57.44.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://app.pluralsight.com/library/courses/google-play-in-app-billing/table-of-contents&quot;&gt;https://app.pluralsight.com/library/courses/google-play-in-app-billing/table-of-contents&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/413599372830903678/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/413599372830903678' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/413599372830903678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/413599372830903678'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/01/my-course-about-google-in-app-billing.html' title='My Course about Google In-app Billing is in PluralSight now!'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgf-2-8jMndNtVyS37XfIkAYXad2WnGQ0eIN_FoxKQmpir269rBjYcFDvkwnKNoVLaSS-8dtw7rZcGI2AhM2yOwsurIURY9u-TiK6VlhfNLXHuzJGCxtMLzw8JVMhMow8HrHFhPwvx5sNSW/s72-c/Screen+Shot+2016-01-24+at+17.57.44.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-1192404179024535700</id><published>2016-01-24T08:54:00.000-08:00</published><updated>2016-01-24T08:54:58.291-08:00</updated><title type='text'>Apple TV 4 Apps and Gaming</title><content type='html'>I have begun to work with Apple TV app. It is very interesting and I made some basic introduction videos for normal Apple TV users and developers. I will make more videos about TV app development later when I get some time.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
For Apple TV Users&lt;/h3&gt;
&lt;h4&gt;
A Quick Look at Apple TV 4&lt;/h4&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/IqPYrYQtotY/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/IqPYrYQtotY?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;clear: both; text-align: center;&quot;&gt;
How to Use Apple TV 4&lt;/h4&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/qoyuU9AEByI/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/qoyuU9AEByI?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4 style=&quot;clear: both; text-align: center;&quot;&gt;
Gaming with Nimbus Controller for Apple TV 4&lt;/h4&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/cGM68_kJuFE/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/cGM68_kJuFE?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3 style=&quot;clear: both; text-align: center;&quot;&gt;
For Testers:&amp;nbsp;&lt;/h3&gt;
&lt;h4 style=&quot;clear: both; text-align: center;&quot;&gt;
How to Test TV App in Apple TV&lt;/h4&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/Bsgdnl3dd4U/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/Bsgdnl3dd4U?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/1192404179024535700/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/1192404179024535700' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1192404179024535700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1192404179024535700'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/01/apple-tv-4-apps-and-gaming.html' title='Apple TV 4 Apps and Gaming'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/IqPYrYQtotY/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-1185188835841717546</id><published>2016-01-19T12:00:00.001-08:00</published><updated>2016-01-19T12:00:30.909-08:00</updated><title type='text'>System Font - TV OS</title><content type='html'>It is useful to know the font names. When I ran the following code that I found on &lt;a href=&quot;http://giordanoscalzo.tumblr.com/post/95900320382/print-all-ios-fonts-in-swift&quot;&gt;http://giordanoscalzo.tumblr.com/post/95900320382/print-all-ios-fonts-in-swift&lt;/a&gt;&amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; printFonts() {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; fontFamilyNames = &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;UIFont&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;familyNames&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; familyName &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;in&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; fontFamilyNames {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s5&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;------------------------------&quot;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;&quot;Font Family Name = [&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;familyName&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;)]&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;let&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; names = &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;UIFont&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;fontNamesForFamilyName&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;(familyName &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;as&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;! &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;&quot;Font Names = [&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;\&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;names&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;)]&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
I get the list of fonts. It could be useful sometimes.&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Kohinoor Telugu]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;KohinoorTelugu-Light&quot;, &quot;KohinoorTelugu-Medium&quot;, &quot;KohinoorTelugu-Regular&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Heiti SC]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Symbol]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;Symbol&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Courier]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;Courier-BoldOblique&quot;, &quot;Courier&quot;, &quot;Courier-Bold&quot;, &quot;Courier-Oblique&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Apple Color Emoji]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;AppleColorEmoji&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Avenir Next]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;AvenirNext-DemiBold&quot;, &quot;AvenirNext-UltraLight&quot;, &quot;AvenirNext-Regular&quot;, &quot;AvenirNext-HeavyItalic&quot;, &quot;AvenirNext-BoldItalic&quot;, &quot;AvenirNext-MediumItalic&quot;, &quot;AvenirNext-Italic&quot;, &quot;AvenirNext-Heavy&quot;, &quot;AvenirNext-DemiBoldItalic&quot;, &quot;AvenirNext-Bold&quot;, &quot;AvenirNext-UltraLightItalic&quot;, &quot;AvenirNext-Medium&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Arial Hebrew]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;ArialHebrew-Light&quot;, &quot;ArialHebrew&quot;, &quot;ArialHebrew-Bold&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Telugu Sangam MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Helvetica Neue]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;HelveticaNeue-UltraLight&quot;, &quot;HelveticaNeue-UltraLightItalic&quot;, &quot;HelveticaNeue-LightItalic&quot;, &quot;HelveticaNeue&quot;, &quot;HelveticaNeue-Light&quot;, &quot;HelveticaNeue-MediumItalic&quot;, &quot;HelveticaNeue-CondensedBold&quot;, &quot;HelveticaNeue-CondensedBlack&quot;, &quot;HelveticaNeue-Thin&quot;, &quot;HelveticaNeue-ThinItalic&quot;, &quot;HelveticaNeue-Medium&quot;, &quot;HelveticaNeue-Italic&quot;, &quot;HelveticaNeue-BoldItalic&quot;, &quot;HelveticaNeue-Bold&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Trebuchet MS]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;TrebuchetMS-Italic&quot;, &quot;TrebuchetMS-Bold&quot;, &quot;Trebuchet-BoldItalic&quot;, &quot;TrebuchetMS&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Bangla Sangam MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Heiti TC]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Hiragino Sans]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;HiraginoSans-W6&quot;, &quot;HiraginoSans-W3&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Tamil Sangam MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;TamilSangamMN&quot;, &quot;TamilSangamMN-Bold&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [PingFang TC]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;PingFangTC-Semibold&quot;, &quot;PingFangTC-Medium&quot;, &quot;PingFangTC-Regular&quot;, &quot;PingFangTC-Ultralight&quot;, &quot;PingFangTC-Light&quot;, &quot;PingFangTC-Thin&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Times New Roman]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;TimesNewRomanPS-ItalicMT&quot;, &quot;TimesNewRomanPS-BoldItalicMT&quot;, &quot;TimesNewRomanPSMT&quot;, &quot;TimesNewRomanPS-BoldMT&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Kohinoor Devanagari]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;KohinoorDevanagari-Light&quot;, &quot;KohinoorDevanagari-Regular&quot;, &quot;KohinoorDevanagari-Semibold&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Kohinoor Bangla]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;KohinoorBangla-Regular&quot;, &quot;KohinoorBangla-Semibold&quot;, &quot;KohinoorBangla-Light&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Thonburi]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;Thonburi&quot;, &quot;Thonburi-Bold&quot;, &quot;Thonburi-Light&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Gujarati Sangam MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;GujaratiSangamMN-Bold&quot;, &quot;GujaratiSangamMN&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Geeza Pro]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;GeezaPro-Bold&quot;, &quot;GeezaPro&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Lao Sangam MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;LaoSangamMN&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Sinhala Sangam MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;SinhalaSangamMN-Bold&quot;, &quot;SinhalaSangamMN&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Courier New]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;CourierNewPSMT&quot;, &quot;CourierNewPS-BoldItalicMT&quot;, &quot;CourierNewPS-BoldMT&quot;, &quot;CourierNewPS-ItalicMT&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Malayalam Sangam MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;MalayalamSangamMN&quot;, &quot;MalayalamSangamMN-Bold&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [PingFang SC]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;PingFangSC-Regular&quot;, &quot;PingFangSC-Ultralight&quot;, &quot;PingFangSC-Thin&quot;, &quot;PingFangSC-Medium&quot;, &quot;PingFangSC-Light&quot;, &quot;PingFangSC-Semibold&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Apple SD Gothic Neo]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;AppleSDGothicNeo-Thin&quot;, &quot;AppleSDGothicNeo-SemiBold&quot;, &quot;AppleSDGothicNeo-Light&quot;, &quot;AppleSDGothicNeo-Medium&quot;, &quot;AppleSDGothicNeo-Bold&quot;, &quot;AppleSDGothicNeo-UltraLight&quot;, &quot;AppleSDGothicNeo-Regular&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Euphemia UCAS]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;EuphemiaUCAS&quot;, &quot;EuphemiaUCAS-Bold&quot;, &quot;EuphemiaUCAS-Italic&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [PingFang HK]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;PingFangHK-Regular&quot;, &quot;PingFangHK-Medium&quot;, &quot;PingFangHK-Thin&quot;, &quot;PingFangHK-Semibold&quot;, &quot;PingFangHK-Light&quot;, &quot;PingFangHK-Ultralight&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Menlo]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;Menlo-BoldItalic&quot;, &quot;Menlo-Italic&quot;, &quot;Menlo-Regular&quot;, &quot;Menlo-Bold&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Kailasa]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;Kailasa&quot;, &quot;Kailasa-Bold&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Khmer Sangam MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;KhmerSangamMN&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Avenir]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;Avenir-Book&quot;, &quot;Avenir-Heavy&quot;, &quot;Avenir-BlackOblique&quot;, &quot;Avenir-Black&quot;, &quot;Avenir-LightOblique&quot;, &quot;Avenir-BookOblique&quot;, &quot;Avenir-Light&quot;, &quot;Avenir-Medium&quot;, &quot;Avenir-HeavyOblique&quot;, &quot;Avenir-Oblique&quot;, &quot;Avenir-Roman&quot;, &quot;Avenir-MediumOblique&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Savoye LET]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;SavoyeLetPlain&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Zapf Dingbats]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;ZapfDingbatsITC&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Kannada Sangam MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;KannadaSangamMN-Bold&quot;, &quot;KannadaSangamMN&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Copperplate]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;Copperplate&quot;, &quot;Copperplate-Light&quot;, &quot;Copperplate-Bold&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Gurmukhi MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;GurmukhiMN&quot;, &quot;GurmukhiMN-Bold&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Iowan Old Style]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;IowanOldStyle-Italic&quot;, &quot;IowanOldStyle-Bold&quot;, &quot;IowanOldStyle-BoldItalic&quot;, &quot;IowanOldStyle-Roman&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Oriya Sangam MN]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;OriyaSangamMN-Bold&quot;, &quot;OriyaSangamMN&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Family Name = [Helvetica]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Font Names = [[&quot;Helvetica-Oblique&quot;, &quot;Helvetica-Bold&quot;, &quot;Helvetica-LightOblique&quot;, &quot;Helvetica-BoldOblique&quot;, &quot;Helvetica-Light&quot;, &quot;Helvetica&quot;]]&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/1185188835841717546/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/1185188835841717546' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1185188835841717546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1185188835841717546'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2016/01/system-font-tv-os.html' title='System Font - TV OS'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-4844755874322858650</id><published>2015-11-12T04:59:00.004-08:00</published><updated>2015-11-12T04:59:48.887-08:00</updated><title type='text'>A Nasty Problem with Android Project using Parse Framework</title><content type='html'>I have had problem when I compiled my Android project which uses Parse Framework 1.10.1. It had worked before but all in a sudden it cannot compile.&lt;br /&gt;
&lt;br /&gt;
The error is like:&lt;br /&gt;
&lt;br /&gt;
Error:Execution failed for task &#39;:xxxx App :packageAllDebugClassesForMultiDex&#39;.&lt;br /&gt;
&amp;nbsp;java.util.zip.ZipException: duplicate entry: bolts/AppLink$Target.class&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I searched the internet and found the saver here&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/28791817/android-studio-gradle-error-multiple-dex-files-define&quot;&gt;http://stackoverflow.com/questions/28791817/android-studio-gradle-error-multiple-dex-files-define&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The solution is to change the bolts version to the specific version that you are using in your Gradle file.&lt;br /&gt;
&lt;br /&gt;
I changed mine from &amp;nbsp; &amp;nbsp;compile &#39;com.parse.bolts:bolts-android:1.+&#39;&lt;br /&gt;
&lt;div&gt;
to&lt;b&gt;&amp;nbsp;compile &#39;com.parse.bolts:bolts-android:1.2.1&#39;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Then it just works!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/4844755874322858650/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/4844755874322858650' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/4844755874322858650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/4844755874322858650'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2015/11/a-nasty-problem-with-android-project.html' title='A Nasty Problem with Android Project using Parse Framework'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-2586280824140035953</id><published>2015-09-20T02:48:00.004-07:00</published><updated>2015-11-30T11:23:26.289-08:00</updated><title type='text'>Welcome to iOS9! - Issues Collection</title><content type='html'>iOS 9 has been installed in more and more mobiles recently. Do you want to have a crashing app in iOS 9? Definitely not. So check if your apps can run in the new simulators.&lt;br /&gt;
I found several issues in my case. Some are issues, some are just because I haven&#39;t read all the document and watched the WWDC videos.&lt;br /&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;b&gt;Issue 1. Parse not showing images.&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
I use Parse as my mobile backend service and store some images and texts there. Texts can be loaded but not images. So I found a good fix from here:&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;http://stackoverflow.com/questions/31078767/images-from-parse-not-loading-on-ios-9&quot;&gt;http://stackoverflow.com/questions/31078767/images-from-parse-not-loading-on-ios-9&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;This is probably due to SSL requirements with iOS 9. Since Parse doesn&#39;t use HTTPS for files, they won&#39;t download correctly. Set the info.plist to include keys such as this, which turn off the SSL requirements...at your own risk, of course:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;lt;key&amp;gt;NSAppTransportSecurity&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;dict&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;key&amp;gt;NSAllowsArbitraryLoads&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;true/&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;key&amp;gt;NSExceptionDomains&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;dict&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;key&amp;gt;files.parsetfss.com&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;dict&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;key&amp;gt;NSIncludesSubdomains&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;true/&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;key&amp;gt;NSTemporaryExceptionAllowsInsecureHTTPLoads&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;true/&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;key&amp;gt;NSTemporaryExceptionMinimumTLSVersion&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;string&amp;gt;TLSv1.1&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/dict&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/dict&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/dict&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;b&gt;Issue 2. Where is .dylib ?&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
Some .dylib frameworks become red, which means that they are not linked correctly. Although my project still compiles, I must fix it. Found a good solution on Stackoverflow.&lt;/div&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;http://stackoverflow.com/questions/30815806/swift-2-ios-9-libz-dylib-not-found&quot;&gt;http://stackoverflow.com/questions/30815806/swift-2-ios-9-libz-dylib-not-found&lt;span class=&quot;s3&quot;&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol class=&quot;ol1&quot;&gt;
&lt;li class=&quot;li9&quot;&gt;&lt;span class=&quot;s5&quot;&gt;Go to Build Phases &amp;gt;Link Binary with Librairies &amp;gt; + &amp;gt; Add other&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li9&quot;&gt;&lt;span class=&quot;s4&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;Once in the file selection window do &quot;CMD&quot;+Shift+G (Go to folder) and type &lt;b&gt;/usr/lib/&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li9&quot;&gt;&lt;span class=&quot;s4&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;From &lt;b&gt;/usr/lib&lt;/b&gt; you can add : libz.dylib and more...&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li10&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Compile and have fun&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;p7&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;More discussions here&amp;nbsp;&lt;a href=&quot;https://forums.developer.apple.com/message/8609#8609&quot;&gt;https://forums.developer.apple.com/message/8609#8609&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Issue 3. Warning about supportedInterfaceOrientations&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The function supportedInterfaceOrientations has different return type in iOS 9. A good solution is here: (reference: &lt;a href=&quot;https://forums.developer.apple.com/thread/6165&quot;&gt;https://forums.developer.apple.com/thread/6165&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
#if __IPHONE_OS_VERSION_MAX_ALLOWED &amp;lt; 90000 &lt;br /&gt;
- (NSUInteger)supportedInterfaceOrientations &amp;nbsp;{&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
#else &lt;br /&gt;
- (UIInterfaceOrientationMask)supportedInterfaceOrientations &amp;nbsp;{&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
#endif&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Issue 4. Warnig&amp;nbsp;itms 90474 ipad multitasking support &amp;nbsp;...&lt;/b&gt;&lt;br /&gt;
During uploading to App Store, this can happen.&lt;br /&gt;
&lt;br /&gt;
Solution&lt;br /&gt;
&lt;span style=&quot;background-color: #f9f9f9; color: #414141; font-family: &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 12px; line-height: 17.4px;&quot;&gt;If you must opt out of Slide Over and Split View, do so explicitly by adding the&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;code-voice&quot; style=&quot;background: rgb(249, 249, 249); border: 0px; color: grey; font-family: Menlo, monospace; font-size: 0.9em; line-height: 17.4px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;UIRequiresFullScreen&lt;/code&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #414141; font-family: &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 12px; line-height: 17.4px;&quot;&gt;&amp;nbsp;key to your Xcode project’s&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;code-voice&quot; style=&quot;background: rgb(249, 249, 249); border: 0px; color: grey; font-family: Menlo, monospace; font-size: 0.9em; line-height: 17.4px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;Info.plist&lt;/code&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #414141; font-family: &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 12px; line-height: 17.4px;&quot;&gt;&amp;nbsp;file and apply the Boolean value&amp;nbsp;&lt;/span&gt;&lt;code class=&quot;k-constant-name code-voice Objective-C&quot; style=&quot;background: rgb(249, 249, 249); border: 0px; color: grey; font-family: Menlo, monospace; font-size: 0.9em; line-height: 17.4px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; word-wrap: break-word;&quot;&gt;YES&lt;/code&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #414141; font-family: &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 12px; line-height: 17.4px;&quot;&gt;. You can do this in the property list editor or in the General &amp;gt; Deployment Info area in the target editor.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #f9f9f9; color: #414141; font-family: &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 12px; line-height: 17.4px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/32557783/invalid-bundle-error&quot;&gt;http://stackoverflow.com/questions/32557783/invalid-bundle-error&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://developer.apple.com/library/prerelease/ios/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForSlideOverAndSplitView.html&quot;&gt;https://developer.apple.com/library/prerelease/ios/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForSlideOverAndSplitView.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Issue 5. Connect to Dropbox problems (or open URL problems)&lt;/b&gt;&lt;br /&gt;
In iOS9, an app calling Dropbox App cannot show content or choose files from Dropbox. It just asks you to install Dropbox, although it is already to installed.&lt;br /&gt;
&lt;br /&gt;
Reason: Apple has added more privacy protection for apps. So one app cannot scan the apps installed in one user&#39;s mobile by opening URL schemes. The solution is to add URL schemes that you need to a white list in infolist.&lt;br /&gt;
&lt;br /&gt;
Solution: You need to add the URL scheme for Dropbox. So add the following lines to the infolist of your app. It will work!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;lt;key&amp;gt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;LSApplicationQueriesSchemes&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;lt;array&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;dbapi-3&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;dbapi-3&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;/div&gt;
&amp;lt;/array&amp;gt;&lt;br /&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;a href=&quot;https://www.dropbox.com/developers/chooser#ios&quot;&gt;https://www.dropbox.com/developers/chooser#ios&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/31454686/in-ios9-dropbox-app-is-not-being-opened-instead-webview-is-being-opened-for-log&quot;&gt;http://stackoverflow.com/questions/31454686/in-ios9-dropbox-app-is-not-being-opened-instead-webview-is-being-opened-for-log&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://www.macstories.net/linked/ios-9-bringing-changes-to-url-schemes/&quot;&gt;https://www.macstories.net/linked/ios-9-bringing-changes-to-url-schemes/&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://useyourloaf.com/blog/querying-url-schemes-with-canopenurl.html&quot;&gt;http://useyourloaf.com/blog/querying-url-schemes-with-canopenurl.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Issue 6. Contact book crashes sometimes&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I have an app which reads out a user&#39;s contact and loads it to a view controller.&lt;br /&gt;
&lt;br /&gt;
Error: Contact and its snapshot should both be non-unified&lt;br /&gt;
Reason: Apple has added privacy protection for contact book. It is a positive thing so I accept the shock that the crashes brought to me.&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
Add these lines in viewDidLoad in the viewController which you open the contact book.&lt;br /&gt;
&lt;br /&gt;
ABAddressBookRef addressBook = &amp;nbsp;ABAddressBookCreateWithOptions(NULL, NULL); &lt;br /&gt;
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { &lt;br /&gt;
&amp;nbsp; &amp;nbsp;NSLog(@&quot;Access to contacts %@ by user&quot;, granted ? @&quot;granted&quot; : @&quot;denied&quot;); &lt;br /&gt;
}); &lt;br /&gt;
&lt;br /&gt;
Reference:&lt;br /&gt;
&lt;a href=&quot;https://forums.developer.apple.com/thread/11354&quot;&gt;https://forums.developer.apple.com/thread/11354&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.raywenderlich.com/97936/address-book-tutorial-swift-ios&quot;&gt;http://www.raywenderlich.com/97936/address-book-tutorial-swift-ios&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/2586280824140035953/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/2586280824140035953' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/2586280824140035953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/2586280824140035953'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2015/09/welcome-to-ios9-issues-collection.html' title='Welcome to iOS9! - Issues Collection'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-6572965678241047167</id><published>2015-08-30T12:27:00.001-07:00</published><updated>2015-08-30T13:22:07.981-07:00</updated><title type='text'>Android Users Need to Know about the Security Threat - Stagefright</title><content type='html'>A new vulnerability in Android is found - an attacker can use MMS to attack your mobile. If you want to know more about it, you can read here.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;BBC news&amp;nbsp;&lt;span style=&quot;background-color: white; color: #5a5a5a; font-size: 13px; line-height: 10.6666746139526px;&quot;&gt;28 July 2015&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;h1 class=&quot;story-body__h1&quot; style=&quot;background-color: white; border: 0px; color: #1e1e1e; font-family: Helmet, Freesans, Helvetica, Arial, sans-serif; font-stretch: inherit; line-height: 1.125; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;a href=&quot;http://www.bbc.com/news/technology-33689399&quot; target=&quot;_blank&quot;&gt;Android bug: MMS threat affects &#39;one billion&#39; phones&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;The discoverer&amp;nbsp;&lt;span style=&quot;background-color: white; color: #333333; font-size: 13px; line-height: 17px;&quot;&gt;Joshua Drake made a presentation on this issue at the Blackhat Conference USA 2015&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #333333; font-family: Roboto, arial, sans-serif; font-size: 13px; line-height: 17px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/71YP65UANP0/0.jpg&quot; frameborder=&quot;0&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/71YP65UANP0?feature=player_embedded&quot; width=&quot;320&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;Fix your mobile&#39;s MMS&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blog.lookout.com/blog/2015/07/30/how-to-disable-auto-fetching-of-mms-messages-on-a-devices-default-sms-app/&quot;&gt;https://blog.lookout.com/blog/2015/07/30/how-to-disable-auto-fetching-of-mms-messages-on-a-devices-default-sms-app/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Use another OS&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Install newest patch from Android. If it is too slow on your Android mobile&#39;s vendor, install some other Android OS, e.g. &lt;a href=&quot;https://en.wikipedia.org/wiki/CyanogenMod&quot; target=&quot;_blank&quot;&gt;CyanogenMod&lt;/a&gt;, which&amp;nbsp;has passed the test for this StageFright problem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;color: orange;&quot;&gt;I just feel to get back my old Nokia 3310 after watching this video :(&lt;/span&gt;&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/6572965678241047167/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/6572965678241047167' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/6572965678241047167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/6572965678241047167'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2015/08/android-users-ueed-to-know-about-this.html' title='Android Users Need to Know about the Security Threat - Stagefright'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/71YP65UANP0/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-3088753955078992035</id><published>2015-08-28T08:29:00.003-07:00</published><updated>2015-08-28T08:33:12.300-07:00</updated><title type='text'>Use Parse for Crash Report</title><content type='html'>The XCode 6.3 has got the support for crash report function (read more &lt;a href=&quot;https://developer.apple.com/library/prerelease/ios/recipes/xcode_help-crashes_organizer/AboutCrashesOrganizer/AboutCrashesOrganizer.html#//apple_ref/doc/uid/TP40015147-CH1-SW1&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;). But before you distribute an app to the App Store, how do you find out a crash? It is hard to let a normal user to send you crash report. Nobody knows how to do it.&lt;br /&gt;
&lt;br /&gt;
Parse has made a nice service - ParseCrashingReport. With this service/framework, you can get the crash reports on the Parse.com&#39;s Analytics panel.&lt;br /&gt;
&lt;br /&gt;
There is complete guide in&amp;nbsp;&lt;a href=&quot;https://parse.com/docs/ios/guide#crash-reporting&quot;&gt;https://parse.com/docs/ios/guide#crash-reporting&lt;/a&gt;. But I find that there are always some small details to add to that. The following is my experience with parse framework 1.8.2. The framework is always updating, so check their official link above to get the latest information.&lt;br /&gt;
&lt;br /&gt;
The steps are like this:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 1.&lt;/b&gt;&lt;br /&gt;
Install / update Parse CLI in the Terminal&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: lime;&quot;&gt;curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo /bin/bash&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 2.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Install cloud code folder in the same fold with the Xcode project. Run the following command in the Terminal&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: lime;&quot;&gt;parse new&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 3.&lt;/b&gt;&lt;br /&gt;
Build Phases-&amp;gt; Link Binary With Librarys&lt;br /&gt;
&lt;br /&gt;
Add libraries: ParseCrashReporting.framework and libstdc++6.0.9.dylib&lt;br /&gt;
&lt;br /&gt;
If any library is missing, the project cannot compile.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 4.&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
In AppDelegate.h, add this&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: lime;&quot;&gt;#import &amp;lt;ParseCrashReporting/ParseCrashReporting.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: lime;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;In AppDelegate.m&amp;nbsp;&lt;/span&gt;didFinishLaunchingWithOptions, add&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;background-color: lime;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;ParseCrashReporting&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;enable&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;before this line&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span style=&quot;background-color: lime;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;Parse&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;setApplicationId&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;@&quot;APPLICATION_ID&quot;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;clientKey&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;@&quot;CLIENT_KEY&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;b&gt;Step 5.&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Add the run script to build phase.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZwquVGFxEz2rAz-pUssZ3uqeM8g1qXuVcdk5a9enrxJ8_saYVgAQHt5KH3iakb_503kFAlth7-fbNkeKMs1TKnm4i9t2zkhkaNRIJqiAgAdP_GKloCX_EgosCK4AFZoVXWdBy5W1ByH08/s1600/Screen+Shot+2015-08-28+at+16.39.15.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZwquVGFxEz2rAz-pUssZ3uqeM8g1qXuVcdk5a9enrxJ8_saYVgAQHt5KH3iakb_503kFAlth7-fbNkeKMs1TKnm4i9t2zkhkaNRIJqiAgAdP_GKloCX_EgosCK4AFZoVXWdBy5W1ByH08/s640/Screen+Shot+2015-08-28+at+16.39.15.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;New run script:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;export PATH=/usr/local/bin:$PATH&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;cd /&lt;/span&gt;Users/emma/Code/MyPlayer/&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;parse symbols MyPlayer --path=&quot;${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Step 6.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Add a crash in AppDelegate.m and test it in release version. Do not run it in debug environment which will catch the exception.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
Parse has given example code to make your app crash in&amp;nbsp;&lt;a href=&quot;https://parse.com/docs/ios/guide#crash-reporting&quot;&gt;https://parse.com/docs/ios/guide#crash-reporting&lt;/a&gt;.&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;b&gt;Step 7.&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
Wait 5 minutes and go to your app&#39;s crash report page on Parse.com e.g.&amp;nbsp;https://www.parse.com/apps/myplayer/crashes&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
If it doesn&#39;t show up, run the release version once again and wait for some time. It will show on your crash report like this.&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1-qc-OfEyfksmr9NK0bwExEoynm4oiwOyKYh3CJNCAi_sn4JBVnoNPQ-DuXjq99_BtWVr4MuGkS2qLPxN8ZUTSt0oUprZp7rJA4JEcTZPAoz4l0zzhJW6KEAK1ky9Iiuyh4S12emzl1Nb/s1600/parse1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;74&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1-qc-OfEyfksmr9NK0bwExEoynm4oiwOyKYh3CJNCAi_sn4JBVnoNPQ-DuXjq99_BtWVr4MuGkS2qLPxN8ZUTSt0oUprZp7rJA4JEcTZPAoz4l0zzhJW6KEAK1ky9Iiuyh4S12emzl1Nb/s640/parse1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Click into the error, you will get more interesting details.&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;NOTICE:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;In step 2, m&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;y folder with the Xcode project is&amp;nbsp;&lt;/span&gt;/Users/emma/Code/MyPlayer/&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;I have setup a cloud folder under the above folder which is called &quot;cloudcode&quot;. But there are only /cloud and /public folders. This misses the /config folder which is normally added when a cloud folder is set up. So I had to make a /config folder and find another cloud folder to copy the global.json. The global.json is important because it makes your app able to login to the Parse server. It should look like this&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
{&lt;br /&gt;
&amp;nbsp; &quot;global&quot;: {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &quot;parseVersion&quot;: &quot;1.8.2&quot; &amp;nbsp;//this is the version I am using&lt;br /&gt;
&amp;nbsp; },&lt;br /&gt;
&amp;nbsp; &quot;applications&quot;: {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &quot;GSOplay&quot;: {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;applicationId&quot;: &quot;your app id&quot;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;masterKey&quot;: &quot;your master key&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; },&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &quot;_default&quot;: {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;link&quot;: &quot;MyPlayer&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
}&lt;br /&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/3088753955078992035/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/3088753955078992035' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/3088753955078992035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/3088753955078992035'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2015/08/use-parse-for-crash-report.html' title='Use Parse for Crash Report'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZwquVGFxEz2rAz-pUssZ3uqeM8g1qXuVcdk5a9enrxJ8_saYVgAQHt5KH3iakb_503kFAlth7-fbNkeKMs1TKnm4i9t2zkhkaNRIJqiAgAdP_GKloCX_EgosCK4AFZoVXWdBy5W1ByH08/s72-c/Screen+Shot+2015-08-28+at+16.39.15.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-1799639640859829007</id><published>2015-08-25T22:18:00.005-07:00</published><updated>2015-08-25T22:25:01.809-07:00</updated><title type='text'>Scroll up a view when typing - iOS</title><content type='html'>This is a common feature for most of the apps. When a UITextField is on the bottom of the view, it is not nice to type without seeing what is typed. &lt;br /&gt;
&lt;br /&gt;
When I am working on a view where users filling their information, I found that I must scroll up the view.&lt;br /&gt;
&lt;br /&gt;
An easy way is to use tableView. Then add some more methods which detect the keyboard. It works like this, scroll up the view when the keyboard is shown and scroll down when the keyboard is gone.&lt;br /&gt;
&lt;br /&gt;
The code is like this&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Add observers for keyboard in ViewDidLoad method&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;NSNotificationCenter&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;defaultCenter&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;addObserver&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;self&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;selector&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;@selector&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;(keyboardWasShown:)&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;UIKeyboardDidShowNotification&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s3&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;NSNotificationCenter&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;defaultCenter&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;addObserver&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;self&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;selector&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;@selector&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;(keyboardWillBeHidden:)&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;UIKeyboardWillHideNotification&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;b&gt;2. Detect the keyboard events&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;/* Scroll tableview up when typing&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;- (&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;)keyboardWasShown:(&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;NSNotification&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; *)aNotification&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;NSDictionary&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;* info = [aNotification &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;userInfo&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s5&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;CGSize&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt; kbSize = [[info &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;objectForKey&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;UIKeyboardFrameBeginUserInfoKey&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;] &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;CGRectValue&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;UIEdgeInsets&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; contentInsets = &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;UIEdgeInsetsMake&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;0.0&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;0.0&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;, kbSize.&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;0.0&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;tableView&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;contentInset&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; = contentInsets;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s5&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;tableView&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;scrollIndicatorInsets&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt; = contentInsets;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;/* Scroll tableview down when typing&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;- (&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;)keyboardWillBeHidden:(&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;NSNotification&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; *)aNotification&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s5&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;tableView&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;contentInset&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt; = &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;UIEdgeInsetsMake&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;44.0&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;0.0&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;, -&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;44.0&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;0.0&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s5&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;//the value 44.0 is for my case with a navigation bar on the top of the tableview. So I need to scroll down the table a little.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s5&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;tableView&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;scrollIndicatorInsets&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt; = &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;UIEdgeInsetsZero&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;3. Unregister observers when dealloc&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;-(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;)dealloc{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&amp;nbsp; &amp;nbsp; [[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;NSNotificationCenter&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;defaultCenter&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;] &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;removeObserver&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;UIKeyboardDidShowNotification&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;span class=&quot;s3&quot;&gt;&amp;nbsp; &amp;nbsp; [[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;NSNotificationCenter&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;defaultCenter&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;] &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;removeObserver&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;UIKeyboardWillHideNotification&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot; style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;That&#39;s all!&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Reference&lt;/b&gt;:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
1.&amp;nbsp;&lt;a href=&quot;https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html&quot;&gt;https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
2. &lt;a href=&quot;http://stackoverflow.com/questions/594181/making-a-uitableview-scroll-when-text-field-is-selected&quot;&gt;http://stackoverflow.com/questions/594181/making-a-uitableview-scroll-when-text-field-is-selected&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/1799639640859829007/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/1799639640859829007' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1799639640859829007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/1799639640859829007'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2015/08/scroll-up-view-when-typing-ios.html' title='Scroll up a view when typing - iOS'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-8427518308845089913</id><published>2015-05-21T21:55:00.001-07:00</published><updated>2015-05-21T21:55:29.003-07:00</updated><title type='text'>How to check a string&#39;s content is a number in Android</title><content type='html'>&lt;div class=&quot;p1&quot;&gt;
There are several methods to do this. I found that Stack Overflow has good solutions for this. To make it simple to read, I organise them here.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
I prefer method&amp;nbsp;isNumeric in solution 1. It is simple, small and no exception catching, which is best on performance.&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Solution 1 (my favorite solution):&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;You can use&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;TextWatcher&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;for&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;EditText&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;to get value of every change in&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;EditText&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;.You need to add interface of TextWatcher in your Activity.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;mEditText.addTextChangedListener(Your Class Name.this);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;on in method of TextWatcher&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; @Override&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;public void afterTextChanged(Editable s) {&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; Log.v(&quot;Log_tag&quot;, &quot;After TextChanged&quot; + s.toString());&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;@Override&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;public void beforeTextChanged(CharSequence s, int start, int count,&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int after) {&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; Log.i(&quot;Log_tag&quot;, &quot;Before TextChanged&quot; + s.toString());&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;@Override&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;public void onTextChanged(CharSequence s, int start, int before, int count) {&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; Log.e(&quot;Log_tag&quot;, &quot;ontext Changed&quot; + s.toString());&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; //you can match here s with number or integer&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(isNumeric( s.toString())){&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //it is number&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;public static boolean isNumeric(String str)&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; return str.matches(&quot;-?\\d+(.\\d+)?&quot;);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;b&gt;&amp;nbsp;2 :&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
This solution &amp;nbsp;is very limited because it only checks 0-9 without considering &quot;-&quot; and &quot;.&quot;. &amp;nbsp;Note that this method returns&amp;nbsp;&lt;b&gt;true&lt;/b&gt;&amp;nbsp;with empty String :&amp;nbsp;&lt;span class=&quot;s3&quot;&gt;&lt;a href=&quot;https://code.google.com/p/android/issues/detail?id=24965&quot;&gt;Issue 24965&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;Since API level 1, Android provides an helper method to do just that (no need to use regex or catching exception) :&amp;nbsp;&lt;a href=&quot;http://developer.android.com/reference/android/text/TextUtils.html#isDigitsOnly%28java.lang.CharSequence%29&quot;&gt;&lt;span class=&quot;s3&quot;&gt;TextUtils.isDigitsOnly(CharSequence str)&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;boolean digitsOnly = TextUtils.isDigitsOnly(editText.getText());&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;b&gt;&amp;nbsp;3:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;String text = editText123.getText().toString();&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;try {&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp; int num = Integer.parseInt(text);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp; Log.i(&quot;&quot;,num+&quot; is a number&quot;);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;} catch (NumberFormatException e) {&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp; Log.i(&quot;&quot;,text+&quot;is not a number&quot;);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p5&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p6&quot;&gt;
&lt;span class=&quot;s4&quot;&gt;&lt;a href=&quot;http://stackoverflow.com/questions/10120212/how-to-determine-if-an-input-in-edittext-is-an-integer&quot;&gt;http://stackoverflow.com/questions/10120212/how-to-determine-if-an-input-in-edittext-is-an-integer&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/8427518308845089913/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/8427518308845089913' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/8427518308845089913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/8427518308845089913'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2015/05/how-to-check-strings-content-is-number.html' title='How to check a string&#39;s content is a number in Android'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-382661589692851207</id><published>2015-04-29T07:05:00.000-07:00</published><updated>2015-04-29T07:05:07.417-07:00</updated><title type='text'>Make Button with Dynamic Color - Android Tutorial</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
I made a video which explains how to make button with dynamic color or dynamic buttons. &amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe width=&quot;320&quot; height=&quot;266&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://i.ytimg.com/vi/wRMb2ZQdNf0/0.jpg&quot; src=&quot;https://www.youtube.com/embed/wRMb2ZQdNf0?feature=player_embedded&quot; frameborder=&quot;0&quot; allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/382661589692851207/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/382661589692851207' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/382661589692851207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/382661589692851207'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2015/04/make-button-with-dynamic-color-android.html' title='Make Button with Dynamic Color - Android Tutorial'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/wRMb2ZQdNf0/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-3026696223940520122</id><published>2015-01-08T12:53:00.003-08:00</published><updated>2015-11-30T11:26:08.798-08:00</updated><title type='text'>Problem in importing address from address book in iOS8</title><content type='html'>Things change all the time. Apple changes so many things which makes me really tired these days. I have to fix several apps which should adapt to iOS8.&lt;br /&gt;
&lt;br /&gt;
I found one problem in my app. There is one function with which you can import one person&#39;s contact by clicking the person&#39;s name in the address book in the mobile. After iOS8, this doesn&#39;t work. After clicking the person&#39;s name, it leads to the details of the person&#39;s contact. It is not what I wanted!&lt;br /&gt;
&lt;br /&gt;
The iOS8 has added a new delegate method which you have to implement if you want to keep the function works same as before.&lt;br /&gt;
&lt;br /&gt;
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker&lt;br /&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; &amp;nbsp;didSelectPerson:(ABRecordRef)person{&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
It is quite obvious that the method is called when you click the person. Just move your previous code for importing contact inside here. Then you won&#39;t see the annoying contact details view :D&lt;br /&gt;
&lt;br /&gt;
Just put my code here as an example so you don&#39;t get panic in searching google. It contains my own methods so don&#39;t copy everything ;)&lt;br /&gt;
&lt;br /&gt;
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker&lt;br /&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; &amp;nbsp;didSelectPerson:(ABRecordRef)person{&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; AddressBookImport* importer &amp;nbsp; &amp;nbsp; = [[AddressBookImport alloc] init];&lt;br /&gt;
&amp;nbsp; &amp;nbsp; PersonalInfo* currentContact &amp;nbsp; &amp;nbsp;= [importer parsePerson:person];&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; // Update the settings&lt;br /&gt;
&amp;nbsp; &amp;nbsp; personInfo = currentContact;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; // Dismiss the contacts view controller.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; [_contacts dismissViewControllerAnimated:false completion:NO];&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; [self reloadInputViews];&lt;br /&gt;
}&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
I have thought that it would take me a long time to fix. But in fact it took only 1.5 hours to fix. All the solution is found in the Apple&#39;s help document. Not too bad !&lt;br /&gt;
&lt;br /&gt;
Possible issue of contact book in iOS 9 is included in&amp;nbsp;&lt;a href=&quot;http://lifewithdotnet.blogspot.se/2015/09/welcome-to-ios9-issues-collection.html&quot;&gt;http://lifewithdotnet.blogspot.se/2015/09/welcome-to-ios9-issues-collection.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/3026696223940520122/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/3026696223940520122' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/3026696223940520122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/3026696223940520122'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2015/01/problem-in-importing-address-from.html' title='Problem in importing address from address book in iOS8'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2663720003531043878.post-871800416489761726</id><published>2015-01-08T12:44:00.001-08:00</published><updated>2015-01-08T12:44:11.986-08:00</updated><title type='text'>Change status bar color in iOS app</title><content type='html'>Some apps may have dark background which makes the statusbar not very clear. There are some steps to achieve a white statusbar content (including text, mobile signal strength icon and wifi icons) in an app with dark background.&lt;br /&gt;
&lt;br /&gt;
I have found some answers on&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/17678881/how-to-change-status-bar-text-color-in-ios-7&quot;&gt;http://stackoverflow.com/questions/17678881/how-to-change-status-bar-text-color-in-ios-7&lt;/a&gt; . The following is what works for my iPhone 4s with iOS7.1 and iPhone6 simulators.&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
On you&amp;nbsp;&lt;b&gt;project plist&lt;/b&gt;&amp;nbsp;file:&lt;/div&gt;
&lt;ul class=&quot;ul1&quot;&gt;
&lt;li class=&quot;li2&quot;&gt;&lt;span class=&quot;s1&quot;&gt;Status bar style:&amp;nbsp;&lt;/span&gt;transparent black style&lt;/li&gt;
&lt;li class=&quot;li3&quot;&gt;View controller-based status bar appearance:&amp;nbsp;&lt;span class=&quot;s2&quot;&gt;NO&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;li3&quot;&gt;Status bar is initially hidden:&amp;nbsp;&lt;span class=&quot;s2&quot;&gt;NO&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;p4&quot;&gt;
Add this line in didFinishLaunchingWithOptions&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p1&quot;&gt;
&amp;nbsp; &amp;nbsp; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Then it should work :)&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifewithdotnet.blogspot.com/feeds/871800416489761726/comments/default' title='Kommentarer till inlägget'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2663720003531043878/871800416489761726' title='0 kommentarer'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/871800416489761726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2663720003531043878/posts/default/871800416489761726'/><link rel='alternate' type='text/html' href='http://lifewithdotnet.blogspot.com/2015/01/change-status-bar-color-in-ios-app.html' title='Change status bar color in iOS app'/><author><name>Emma</name><uri>http://www.blogger.com/profile/08192858592535442300</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49mrUs8MZ3SU_m1m76L-wWh3hLr8SACD-7N_2-vPafZjbUGvRfCW72wyfSR0ebt9JYcnQnUP5J-8hKQ7cfvQA6aWtVBSysDm1--953kqla1w5t9DX5ALlji-Lju3o4tc/s220/time.JPG'/></author><thr:total>0</thr:total></entry></feed>