Recently I had a support case where the problem was connectivity from mobile devices using K2 Mobile app. In retrospect case was very easy, but there is one interesting observation which to some extent was cause of confusion and slow progress towards resolution.
Not doing a lot of configuring of K2 Mobile as I have ready-made environments where everyting is up and running already at my disposal I felt that I need to look through available K2 documentation. What I found confusing or lacking is that documentation is heavily focused on K2 mobile client apps usage and troubleshooting of connectivity from client side and there is no documentation section or document dedicated to server side setup of K2 Mobile functionality which I expected to see. The closest thing to server side settings/requirements documentation for K2 Mobile which is possible to find is probably “Troubleshooting the K2 Mobile Apps for iOS and Windows Phone (K2 WebAPI)” document. Which is again written from the mobile app/client POV 🙂
Any ideas why I had such expectations and why there is no such documentation?
So the answer is I think that I, as well as many other folks burdened with experience in IT which harks back to the early days of mobility, still have that outdated idea that if you need mobile device access to your enterprise application you inevitably need dedicated application server for this role configured separately and quite often placed in DMZ and all this configured as a big extra feature. Well things moved forward since these early days of mobility and now apps being written with pervasive mobile devices in mind, or rather I would say web standards and application development standards imply ability to access from different type of devices and over the Internet. So we still need to configure firewalls (though even this is mitigated by tendency to use standard 443 port instead of obscure ports requiring you to do extra changes on firewall side), but access from mobile apps given the situation with development standards and maturity of devices themselves (they much more close to real PCs in terms of their hardware horsepower, features supported by their browsers and bandwidth available to them) it is just an extra feature and not a big separate product or application role anymore. Consequently there is no huge configuration guide related with server side configuration required for K2 Mobile. Really, K2 mobile going to work for you (almost 🙂 ) without any additional server side configuration OOB and it is more matter of allowing network connectivity these days.
So you obviously need some public URL as a way of accessing your K2 site (in particular mobile app needs an access to K2API and designer URLs) – in essence your URL should be binded properly to K2 site in your IIS – pay attention to host headers – your binding should either be set as “All unassigned” or set to use your public URL.
Another important thing is that any real world production deployment going to require HTTPS and it means that you need to have a certificate. And what you should know is that for now K2 Mobile for iOS app will allow to connect even if you use not-trusted certificate, whereas K2 Mobile apps for Android or Windows mobile apps will fail to connect giving you obscure error message when you are using non-trusted certificate.
So really quick troubleshooting guide:
1. Mobile app giving you “Server not found” error. Make sure that firewall allows access from mobile device to K2 server, i.e. your URL is being resolved properly by clients and next your mobile devices are able to reach K2 server IP.
2. Mobile app gives you “Mobile services not found” error. It seems that you are reaching web server but there is a difficulty accessing required K2 subsites. Check your K2 site bindings – your IIS server should be configured to serve request coming to the public URL you use for K2 Mobile access.
3. Your K2 Mobile app works on iOS, but on Android devices you are receiving “Request Time Out” and on Windows Mobile “WININET_E_CANNOT_CONNECT” errors. These obscure error messages are trying to say you that certificate you are using for your public K2 URL is not trusted on devices. At the moment K2 Mobile app for iOS allows connecting with not-trusted certificate (this is subject to change in next versions), but Windows Mobile and Android apps won’t connect until you have trusted certificate. It means that you have to install the root certificate of the certificate authority which issued your K2 URL certificate on your mobile devices.