Thoughts from Dan Miser RSS 2.0
# Saturday, 27 April 2013
I was using TestFlight for my existing Xamarin MonoTouch project, but it didn't really do what I wanted. I wanted something that would centralize crash reporting for me when something went wrong with my app after it was downloaded from the App Store. TestFlight never really worked for that (at least for me). It allowed me to send beta versions of my app, which was cool, but I wanted a bit more.

I downloaded the binary version of HockeyApp and also set up an account and an app on hockeyapp.net. I got it working by:

  1. Add the reference to the pre-compiled HockeyApp.dll
  2. Place the bundle in the root of my project directory (a bundle is really a directory of files). The instructions on that site no longer work to just Include in Project, so I did an "Add Files from Folder" option
  3. I was sure to add the code to make things crash proof
  4. I was getting a build error when compiling to device (error MT5202: Native linking failed. Please review the build log. Which was really due to Undefined symbols for architecture armv7: "_CTFontCreateCopyWithAttributes"). I fixed that by adding the following into my Additional mtouch arguments: -gcc_flags "-framework CoreGraphics -framework CoreText -framework QuartzCore"

After all of that, I was able to get things compiled. I then followed the deployment suggestions from the readme.md page on the github project.

I was able to upload the dSYM.zip and ipa files, and get the email invite and tried to download the app. I initially received an "Unable to install the app at this time" error message. That led me to believe the device wasn't imported, so I tried to import using the hockey app bookmarklet. It brought me a list of existing UDIDs back to the hockey app site, but the import did not save those devices. I need to drill down on this some more to get a solid list of steps needed to release both beta and app store versions.

I'd also like to be able to have logging data stream to the hockeyapp server and correlated to a specific device. And I'm not 100% certain I've done things properly, but this was a good cookbook on what I did to get things at least uploaded to the hockeyapp server. If I can get this to work, it's well worth the $10. per month.

Saturday, 27 April 2013 03:56:09 (GMT Daylight Time, UTC+01:00)  #    Comments [0] -
iPhone
# Saturday, 10 March 2012
There is no way I can list everything I learned with MonoTouch over the last couple of months. I'll summarize my experience by saying I'm a very happy customer. There were bumps and bruises along the way, but between the mailing list and the support crew at Xamarin, I heartily recommend investigating MonoTouch if you're a .NET developer that wants to get to the iOS AppStore quickly. I had to take several detours along the way (converted my existing app from Lightspeed to EF4 CodeFirst, converted to use POCOs, had support obligations, and wrote a sync engine to communicate over ServiceStack, but in the end, things lined up pretty well.

Some of the highlights:

  • I had to write code to essentially mimic the context loading that EF would do for you. This included fixing up object references as well as reading and writing from the SQLite database. Not horribly difficult, but it was something I'd rather I didn't have to do.
  • I encountered a couple of problems executing various LINQ statements when running on the device. A quick test case, and the devs at Xamarin had me with either workarounds or fresh bits to solve my problems.
  • Be sure to embrace threading when making web calls - especially on startup. You have 15 seconds to have your app launched on the device, or the device will think it is hung and kill the app.
  • Deploying to the app store has been written about extensively as a complex and intricate process. It turns out, there's good reason for that. After I got through an error due to linking my release build to ServiceStack.Text.dll, the resulting upload to the app store was failing verification. For some reason, the application name of RouteBoostiPhone.app was not being accepted. I changed the name to RouteBoost.app and it sailed right through. I have no idea exactly why this was required, but there you have it.
  • MonoTouch.Dialog is a very nice framework for building a line of business app. Be sure to check it out.

When I look back on the road I travelled to get my app to the app store, I'm impressed with how much of the business logic I was able to carry over. The time savings in being able to bring my business logic across as POCOs that have been extensively tested in production over many years was the real reason I went with MonoTouch to begin with. I most definitely do not regret that decision.

Note: I was not compensated or asked to write this post. I am just a happy paying customer of a product that saved me time, and I wanted to share my experience.

Saturday, 10 March 2012 01:48:03 (GMT Standard Time, UTC+00:00)  #    Comments [0] -
.NET | iPhone
# Wednesday, 29 February 2012
The iPhone app that I'm writing uses ServiceStack to communicate with an existing ASP.NET MVC app that I've had in production for a long time. The way I have things set up is that I'm doing my iPhone development on MonoTouch on the Mac side, and I use VMWare Fusion to run Windows as a guest OS. This blog will highlight a few of the tips that I found to be handy.

  1. Getting IIS Express to work from an external server (even the Mac OS host) is theoretically possible. I found articles lying around the net saying it could work, but it never worked for me. I ended up going back to Cassini (WebDev.WebServer40.exe) and using tcpTrace to listen externally on port 8080 and forwarding to my local port (e.g. 1234).
  2. In order to get VMWare Fusion using NAT to talk to my Windows OS on a consistent IP address, I added this section at the bottom of /Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf (replacing the MAC address of the Macintosh and the IP address from the Windows machine)

    
    host winguest {
    	hardware ethernet xx:xx:xx:xx:xx:xx;
    	fixed-address 172.16.123.123;
    }
    
  3. In order to get external devices (e.g. my iPhone connected to the same wireless network) to see in to the Windows OS, I set up port forwarding to route requests coming in to the Mac on port 80 to point to port 8080 on the Windows machine. I did this by modifying this section in /Library/Preferences/VMware Fusion/vmnet8/nat.conf:

    
    [incomingtcp]
    80 = 172.16.123.123:8080
    

After all of that, I can communicate from my iPhone through my Mac into the VMWare-hosted Windows machine to get at the data.

Wednesday, 29 February 2012 00:37:46 (GMT Standard Time, UTC+00:00)  #    Comments [0] -
iPhone | Macintosh
# Sunday, 22 January 2012
I found the class ActionSheetDatePicker from the book Developing C# Apps for iPhone and iPad using MonoTouch iOS Apps Development for .NET Developers. It was a very nice and clean implementation that would allow for having an ActionSheet pop up with a UIDatePicker in an iOS application.

It did lack 2 things, though:

  1. The ability to specify a starting default date in the UIDatePicker
  2. The ability to get cleanly launched from a UITextField component (i.e. effectively replace the default keyboard of a text field with this date picker). The original code would leave the default keyboard up when getting called from a UITextField component.

I fixed those things, and you can find the results in this gist.

Sunday, 22 January 2012 18:13:42 (GMT Standard Time, UTC+00:00)  #    Comments [0] -
.NET | iPhone
# Thursday, 08 December 2011
My company's core applications are written in ASP.NET MVC, and have been well received. But the nature of what those applications can do in limited/non-existent connectivity areas is causing enough problems that I need a native iPhone solution. (HTML 5 offline storage is not enough. I need full access to the brains of calculation engines that are in my business logic on the server, and I wouldn't relish moving that logic to JavaScript. Besides, I found a real nice thermal receipt printer that will work via SDK with a native app!)

I came across MonoTouch, and I really like how it will enable reuse of my hard work over the years. The main obstacle for me was how to get the data out to my iPhone client. I wasn't exactly thrilled with the idea of shoe-horning WCF access from the iPhone, and working with WCF at my day job is a configuration nightmare. REST would be good, but I wasn't happy with the options out there - until I found ServiceStack. I don't know why this thing doesn't get more publicity. It is everything I want: small, fast, actively developed, easy to configure, JSON, REST, DTOs, and works easily with MonoTouch. Well done, guys.

The first snag I hit getting some demo code out there was that if you want to have the client code exist on MonoTouch, be sure to add references to the assemblies found in the MonoTouch-v2.20.zip file on github. I'm curious why this is still labelled as 2.20, and why those assemblies are still dated from June 9, 2011, but for now, things are moving along to convert my ASP.NET MVC application to use services, and expose those services for use on my iPhone client.

Look for more posts about ServiceStack and MonoTouch in the near future.

Thursday, 08 December 2011 21:27:12 (GMT Standard Time, UTC+00:00)  #    Comments [0] -
.NET | iPhone
# Saturday, 15 October 2011
I've had a web application written using iUI for a couple of years now. It's been stable and rock solid, and I really appreciate the leg up that it gave me. However, this weekend I converted away from iUI to jQueryMobile. I have another application in production already using jQueryMobile, and it is absolutely an amazing library.

The reasons I went with this move were:
  • iOS 5 had substantial changes to Safari and my existing application is broken in many places. Instead of spending time debugging and fixing something 2 years old, I figured I'd take the time to port to jQueryMobile.
  • I've had to leave iUI at version 0.31 for this entire 2 year period. When they started development on the 0.4 version, they changed form submissions to break if you had multiple form fields with the same name. I absolutely had to have this capability in order to support ASP.NET MVC list binding. I reported the issue in the forums, and it didn't get much attention. Sure, it's open source, but if I have to chase down bug fixing in a framework I'm not intimately familiar with, it's a negative.
  • There is no easy way with the released version of iUI to do things like jQuery calls, hook events into the page create/show and hide/destroy. Sure, there are code modifications you can find on the web, but it's a forking nightmare and tough to maintain (is this for 0.31, 0.4, or 0.5? does it require other extensions or modifications? etc.).
  • From a non-technical perspective, the roadmap of iUI has been all over the place. I can't remember for sure, but I think it was originally slated for moving 0.4 in to release status in like June of 2009. It's been pushed out over and over again, trimmed in scope, and there just doesn't seem to be traction or consensus to move the product forward. In contrast, jQueryMobile is looking to have a 1.0 release in the next few weeks with constant releases over the past few months.

Saturday, 15 October 2011 22:26:06 (GMT Daylight Time, UTC+01:00)  #    Comments [0] -
.NET | ASP.NET MVC | iPhone
# Wednesday, 24 November 2010
After downloading iOS 4.2.1, here are the things that stand out:

  • Apple didn't release a full version of AirPrint. Instead, it's a pretty watered down version that works only against a very select few new HP printers. This is a bit of a disappointment, but there are a couple of 3rd party solutions out there that restore the "print to any networked printer" (Windows and Mac versions are available. I installed and tested the Windows version and it works great. The one hiccup I had was that my firewall didn't automatically prompt me to open up for AirPrint. Once I added it to the exception list, it worked perfectly. If you don't have the Guest account on, you will be prompted for user credentials when printing. I tested both ways, and they both worked fine.
  • I have a web application written using iUI. I noticed that after the upgrade that the look and feel is much different (text boxes in forms are shrunk considerably). I know Mobile Safari underwent some big changes for this upgrade, so I'll need to update the css. I'm looking to convert to jQueryMobile, so this isn't that big of a deal.
  • Initially, I had lost my Google Voice voicemail. I had deactivated and reactivated the voicemail, but I couldn't get it to work. Today, it works fine. So perhaps it was an issue with Google Voice and not iOS 4.2.1

If we could just get voice recognition everywhere like Android, I'd move my satisfaction with the iPhone from 99% to 100%.

Wednesday, 24 November 2010 03:23:00 (GMT Standard Time, UTC+00:00)  #    Comments [0] -
iPhone
Navigation
Archive
<2017 December>
SunMonTueWedThuFriSat
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456
Blogroll
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2017
Dan Miser
Sign In
Statistics
Total Posts: 388
This Year: 0
This Month: 0
This Week: 0
Comments: 630
Themes
Pick a theme:
All Content © 2017, Dan Miser
DasBlog theme 'Business' created by Christoph De Baene (delarou)