WL 6.1 mobilewebapp version in application-descriptor.xml - ibm-mobilefirst

I see from the documentation that the version attribute for the mobilewebapp environment has been removed? Why is this? Is there any way to add this? This was very useful for us!
Using WL 6.1.0.01.20140418-0637.

I don't quite understand how it was "useful" to you, because this property never had any actual meaning for the Mobile Web and/or Desktop we browser environments to begin with. It only caused confusion, hence it is now removed.
There is no way to add it back by the developer.
If you think it is useful to you for some reason, you can submit a feature request: http://www.ibm.com/developerworks/mobile/worklight/connect.html

Related

Mobile First Encrypted Cache Errors

I am using the IBM MobileFirst Studio Plugin 7.1 and am following the tutorial - Storing sensitive data in encrypted cache at this link:
https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-0/data/storing-sensitive-data-encrypted-cache/
I have noticed that the ERROR CATALOG that I see is different than what is present in the documentation. This is a screen shot of my CATALOG
I am not able to see the ERRORS for the
WL.EncryptedCache.ERROR_SECURE_RANDOM_GENERATOR_UNAVAILABLE
WL.EncryptedCache.ERROR_COULD_NOT_GENERATE_KEY
They are either mentioned in the code but not in the documentation or vice versa. Am I missing something? Please advise.
I have dispatched a note to the development team to verify what is going on.
It appears we may have a defect here. Will update once news arrive.

Override worklight.js

I'm developing an app with IBM MobileFirst Platform and I find an issue with Worklight.js file. Worklight.js is extending Function prototype defining several methods like bind, curry, wrap and so on.
My app is built with aurelia framework an after upgrading the framework to the last version I'm facing a funky issue related to bind extension.
If I comment the bind extension in worklight.js everything seems to work like a charm (don't know why worklight implements its bind version).
Worklight.js file seems to be added to the wlapp package at build time. Is there a way I can override this file so I do not have to modify .wlapp file each time app is built?
Thanks
The direct answer to the specific question you've asked is, no, there is no way provided to override worklight.js. This is the core JavaScript code needed for the MobileFirst Platform client-side to function, and as such the user isn't given any means to modify it - it's injected into your app (i.e., into the WLAPP file) during the build process.
I'm not aware of any specific issues with Aurelia, but have certainly seen cases in the past where an app that uses two different frameworks (e.g., MobileFirst Platform / Worklight, and something else) "fight" with each other because they both want to implement extensions that are not compatible with each other - in which case, one framework or the other usually needs to change to accommodate the other.
If you are a customer with paid support, I'd suggest opening a PMR so we can get our developers to take a look at the issue.
I have the same problem with Angular. Worklight bind makes Angular controller fail to instantiate. The solution is to recover the bind function after worklight is loaded.
var bind = Function.prototype.bind;
window.wlCommonInit = function() {
Function.prototype.bind = bind;
};

IBM Worklight 6.0 is confusing

I was using IBM worklight 5.6 earlier but just updated latest 6.0. Right now thinkin why I updated, earlier was good. Really lots of weird things happened in the worklight project.
App descriptor is changed, I wonder where i'm going to change the server IP ? And I also got to know that 6.0 is having some new Geo location toolkit. Where is that unable get it or did not find a way to get it. No proper doc available to me, I have done a lot google on it. If anyone is having any info regarding this ?
Build for remote server; right click the app, run as > build for remote server to change the connection hostname:
http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/topic/com.ibm.worklight.help.doc/devref/t_transporting_the_app.html?resultof=%22%72%65%6d%6f%74%65%22%20%22%72%65%6d%6f%74%22%20%22%73%65%72%76%65%72%22%20
Geolocation (location services):
http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/topic/com.ibm.worklight.help.doc/devref/c_overview_location_services.html?resultof=%22%67%65%6f%6c%6f%63%61%74%69%6f%6e%22%20%22%67%65%6f%6c%6f%63%22%20
The rest of the docs:
http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/index.jsp

iOS App Settings/Preferences in Worklight

I am working on a Hybrid Application, targeting (for the moment) iOS. Does Worklight have a utility to handle application settings/preferences for iOS? I know how to write the native code to do this, but do not yet know how to gain access to the application settings from the JavaScript. Can anyone point me in the right direction or provide a working example?
In application-descriptor.xml, there is a worklightSettings flag you can set, however the settings page it creates is not user facing. That is, it is meant only for development time, or internal usage, and not production. It allows control of the server address that athe client connects to and change the web resources it will fetch.
So the answer is, no.
The mentioned settings page has set items in it that cannot be altered much (settings.bundle which does not allow much room for play. Maybe you could change it a bit, but doing so would void giving support to you if problems arise). I would recommend against doing so.
So this leaves you the option of creating this on your own. Maybe there is an existing Cordova plug-in that does something similar. Review these training modules of how to incorporate Cordova plug-ins to your application. Cordova bridges between JavaScript to native code, so it could be what you're looking for.

How to recognize programmatically that application is installed vs development mode?

I'm trying to get information about license info of my app and MSDN docs (http://msdn.microsoft.com/en-us/library/windows/apps/hh694065.aspx) advice to use Windows.ApplicationModel.Store.CurrentAppSimulator class for that purposes during development/testing and when submitting app to store replace that class with Windows.ApplicationModel.Store.CurrentApp.
I wonder if there is any way to check in code (javascript in my case) if app is already installed from store so my code should use proper class and I won't have to remember every time I submit update of app to store to replacing those classes properly.
As far as I know, I could not find such thing. In fact, LicenseInfo is what provides information about the store listing.
I use a config.js file to keep settings at place which change between development and production. For example - if your app talks to a service, service URL also will likely change between development and production; the service might be running at localhost for development and for production in azure environment. I keep a bool in here and change by hand.
I have not automated it fully. but it is likely possible. need to dig through the msbuild logs for the build created for the store. if there is configuration setting found, then project can have two config.dev.js and config.release.js and msbuild need to conditionally pick the right file. I haven't looked into this yet.
I think I found at solution as described here WinJS are there #DEBUG or #RELEASE directives? . Not ideal, but works for me.