User Data and Paid Customers When Converting WP SL App to Universal - silverlight

I have some existing Windows Phone Silverlight applications. I am considering porting some of them to universal apps. I can find a lot of information about the development side of things with regards to the port, but nothing that talks about the deployment issues.
For example, my existing WPSL app is a paid app with free trial and some customers have purchased. Do I need to do anything to ensure those paid customers continued to receive the non-trial features if I push a universal app package? The purchase API's are different, are the backend servers/purchase records compatible, or is there no way to keep paid customers at the paid version?
Also, what about app settings from isolationstorage settings and data files saved to local storage by the app? Will these be kept and accessible through the new API's when the new package is downloaded as an update, or will the fact the package is a different framework/version/appid cause the data to be deleted? Do I need to give the package the same id's as the Silverlight version to ensure all this stuff just works?
Thanks in advance.

It should just work without needing to do anything fancy.
It will be the same app, just a different implementation. Your paid users will stay paid and your upgrading users will keep their data.
If you associate and add the new appx to the same app entry on the dashboard then everything should work smoothly. When you associate the runtime app the product ID, etc. will be set to match the existing version in the store (via a mapping since the actual values are different)
IsolatedStorage maps to ApplicationData.LocalFolder and LocalSettings (this was already true on Windows Phone 8 - you could use either API)
See What's next for Windows Phone 8 developers for an overview of your options.
See Migrating your Windows Phone 8 app to a Windows Runtime XAML app for information on feature changes you'll need to be aware of.

Related

Backing up iOS apps with outdated provisioning profiles

I created an iOS 8.X app with the company I previously worked for, and would like to keep the app for personal reasons. I have all of the code for the app, but it was written in swift 1, and hasn't been updated to the swift 2 syntax. Also, it was written using provisioning profiles for my old company, which I no longer have access to.
I haven't upgraded my personal device to iOS 9 yet so I can keep the app on my device to demonstrate at job interviews.
Is there a way I can locally save the app on my computer and install it on any device without the proper provisioning profiles, developer license, etc.?
You'll need your own developer account, which shouldn't be a problem because they are free now. But basically if you have the source code, you can simply re-build it with your personal provisioning profile. Because you won't be able to set up an explicit application ID, you will simply create a wildcard id on Apple's developer site, then create a developer provisioning profile using that wildcard ID and your personal certificate. Then simply build it to the device directly.
Why are you not updating your device to iOS 9? If properly written, your app will work fin on iOS 9 if it worked on iOS 8. The opposite is not necessarily true, as an app with a minimum OS version of 9 probably makes SDK calls that did not exist in 8. Although some changes may be needed, you should be able to build your app with the latest version of Xcode even though you originally coded it in Swift 1.2. You can find simple instructions on how to do that upgrade. This will also allow you to address any potential iOS 9 issues.
If you don't have the source code, but have the .ipa file, you could also resign it using the instructions here: https://stackoverflow.com/a/25656455/3708242
This is not as ideal, because if there are iOS 9 or iOS 10 issues, you will not be able to fix them. I think keeping the source code available (if you are legally allowed to) will be your best bet.

Creating a user-configurable New Relic Plugin

I've been playing around with the New Relic Ruby SDK and created a proof-of-concept plugin which gets data out of Graphite, and sends it to New Relic.
Other plugins I've seen target a well-known set of data (e.g. Apache Requests or CPU load). However, in this case I cannot pre-configure the dashboards for publishing, because the data for each user will be completely different, depending on how they configure it and the data they store on their graphite.
Is there a way to publish a plugin without a pre-configured dashboard / charts?
Every New Relic published plugin necessarily includes a Dashboard. You could record metrics like "Component/Graphite/" and then expose the results generically in your associated dashboard with "Component/Graphite/*". Most likely those won't be very useful graphs.
If you treat this as a Graphite plugin SDK for users who want to easily collect Graphite metrics by configuration, it will make more sense. When doing this, you should make the GUID configurable as well and include clear instructions on changing the GUID for each use of the SDK. That way, users will get their own fresh Dashboards each time their use your SDK.
Yoav, I strongly suggest you do not distribute your plugin agent with a GUID in place (you currently have com.gingerlime.graphite.graphite).
If another user runs your agent with their New Relic license key, and doesn't change the GUID, they will be unable to customize their plugin dashboards, and any customizing you do will not be seen by them.
In other words, un-published plugins should not be distributed publicly - anyone that uses a un-published plugin will have a bad experience (unless they first customize the GUID).

Pre populate client database with PhoneGap (primary target Android)

There have been a few articles and questions about how to do this but they all seem to have a bias to iOS.
So first of all I am currently using PhoneGaps database functionality:
http://docs.phonegap.com/en/1.0.0/phonegap_storage_storage.md.html
I have a database I need for the app to run from as it contains a lot of information, probably about 1mb worth (can be exposed as .db/.sql). So I want to be able to make my PhoneGap app and build it for as many platforms as possible. However I want it so that as soon as the user has installed the app it automatically installs the database for them.
Some of the solutions seem to recommend creating the database on first boot, but this just seems a bit hack-ish and sidestepping the problem.
I am more than happy to switch over to use webSQL if Android, iOS and other providers support it, however as PhoneGap wraps any available native OS DB functionality it seemed more realistic that you can get an app to pre-populate an Android database and access it via PhoneGap than pre-populate a web database and access it via webSql.
Hopefully this question makes sense and there have been advances since mid last year, which seems to be the last up to date post on this sort of thing.
I just answered another similar question on this topic. First PhoneGap doesn't implement the Storage function that is documented. In fact we take advantage of the sqlite and localStorage functionality that is implemented in all webkit based browsers.
My recommendation is for you to pre-populate a SQLite DB and on application startup copy the DB to the correct location so your app can access it. There is a good blog post on this topic at:
http://gauravstomar.blogspot.com/2011/08/prepopulate-sqlite-in-phonegap.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+GauravSTomarBootstrappingIntelligence+%28Gaurav+S+Tomar+%3A+Bootstrapping+Intelligence%29

Cross-platform mobile API -- Looking for recommendations

So, yes, this is probably 1000th question on the subject. However, my question is somewhat different from others that were asked about this, so please bear with me:
I am looking to develop a single mobile-app that targets the three/four popular and/or growing mobile platforms (Iphone, Android, WinPhone7, RIM). This application is an extension of an existing SaaS system that my startup currently offers. This mobile-app would provide a quick-and-simple way to view up-to-date status & chart & report information for the data that SaaS application collects. Connection to the internet is required 100%. No data entry besides username/password. App is very simple with 5-6 "pages".
In phase 1, all that would need to be supported is for user to log in, get to see current status of his data stored in the cloud, get access to a few live reports
In phase 2, I'd like to be able to offer push-notification of certain key events from my servers in the cloud
My goals are:
1) The back-end processing that generates data for reports is already written in ASP.NET MVC2. I want to re-use it. It can be exposed as either a WCF service or published on a mobile-friendly website
2) I'd like to be able to deploy the patches faster than through the official app-stores/marketplaces.
3) I cannot afford to spend a lot of resources to target three-four proprietary platforms, for an app that is auxiliary to the vertical purpose of the business. I want to develop it once for all 3-4 platforms.
4) I do not have access, nor do I want to purchase a Macbook
5) I do want to deploy thru the vendor-specific application marketplaces
6) I'd like to stay way from proprietary languages/frameworks/lock-ins
Sounds like what I need is a shell around a mobile-friendly site that can be packaged as an app. Are there existing products that can make it REAL EASY for me to do so? Will doing so, preclude me from doing push notifications in phase 2?
Can anyone recommend a "shell" product that would make a wrapper around the website as well as Javascript library that would look the best across all 4 platforms. I've seen the names like Jqtouch, Jquery Mobile, etc... but not sure which ones are better for what I need.
Do I need PhoneGap? I am not 100% sure here. Can PhoneGap use online-only html/javascript pages to translate into native code or must html/javascript files be distributed with the application? I'd rather have the website itself drive the UI completely, as I can keep changing the website without various version approval processes from vendor market-stores.
Thank you for help
I don’t think you need Phonegap after reading about your project goals. You might consider a Web App instead of a native one if you 1) dont want to buy a mac (required for iOS even tho you can compile it in the cloud: https://build.phonegap.com/), and 2) want to apply and deploy updates anytime without going thru those platform independent marketplaces and approval processes.
jQuery Mobile would be an excellent choice, currently (at this very moment) in Alpha 3 but a very stable one and you can deploy your system on any of those platforms. Note that if you focus your efforts in a Web App you can’t target the second phase you mentioned: Push Notifications.
If you decide going Native, then Push Notifications services can be deployed into your Phonegap project once you setup the proper web services and certificates (take a look # http://easyapns.com);
..and one quick note, the idea of phonegap is that all resources (html, js, images. etc) have to be distributed locally within the app and then getting online data (like reports, etc) using JSON from another web service, and that’s another easy task to accomplish. Phonegap DOES NOT compile your HTML files into native code (ObjectiveC or Java), it just load your Web App into a UIWebKit component at run time (in the case of an iOS app)
Another alternative could be using Titanium - http://www.appcelerator.com but this approach is more javascript oriented and your final app looks much more native. (not HTMLs here so I think thats a drawback for you)
Hope it helps :)

What sort of programming environment is the Pyxis/Verivo Mobile system?

I just heard that a company I do work for may be bringing in the Pyxis Mobile application development system. When I google it most of what I find is from the company's web site and that is not very informative from a geek perspective. Can any one shed some light on what sort of programming environment it is and what programing language is involved (please let there be a text based language). Any additional information would be great.
Note: the company/product changed their name to Verivo in January.
Full Disclosure - I work as an engineer at Pyxis Mobile. However, I have been in the mobile space for 7+ years and have evaluated several approaches to mobile so hopefully this is helpful.
Pyxis Mobile provides a set of tools and components to build cross platform mobile applications. Let me outline them first.
1. Application Studio - All application development, backend integration, user provisioning and application maintenance/debugging is done w/in this tool. Application Studio (for now) is a Windows based desktop app.
2. Application Clients - Pyxis Mobile provides native client runtimes for iPhone, iPad, BlackBerry, and Android devices. These runtimes get branded for the customer through a build service and are primed to point to a specific Application Server URL.
3. Application Server - Pyxis Mobile App Server runs on the .NET stack (on IIS). All client communication is proxied via this server. This server is able to connect to varied of backend systems (via the Plugin Framework listed below) and respond to the client in a mobile optimized manner. This server needs a SQL Server (2005 or newer) for configuration access, session management, logging and more.
4. Plugin Framework - The Plugin Framework is a backend component that provides system specific pre-built access to several of the enterprise and cloud based systems (Oracle, Siebel, SAP, Salesforce.com, social feeds, REST/SOAP web services, etc.) and also offers an API layer in .NET and Python (using IronPython) to allow even further customization. A plugin is essentially comprised of one or more DLLs or a Python file. These assets are then dynamically loaded to normalize communication between Pyxis Mobile and the customers' backend systems.
5. Push Services - This provides a cross-platform push layer that can poll a backend system for change and alert a mobile device via BlackBerry Push, Apple Push Notification Services (APNS) or Android's Cloud to Deice Messaging (C2DM).
6. OverWatch Analytics - This is an optional (but included) component to track users/devices and provide integrated analytics on what the users are using and what kind of devices and locales makes up your users.
The application itself is "coded" via configuration that is build in App Studio. Pyxis Mobile abstracts away from the code so that you can work at a higher level without having to worry about the wide array of device variances (GPS, touch screens, camera, accelerometer, push, screen resolution, etc.). You can drag fields onto a from, connect screens via menus or buttons, set up caching rules and more in this graphical utility. This configuration (essentially think of an XML like document) is interpreted by the native client layer to produce a rich application. There is also a scripting layer in Lua that allows to really customize behavior via code.
The real value of Pyxis Mobile comes up when you have change to make. The clients check for new configuration at app startup or if the server forces the client to get new configuration. This gives you great agility. Lets say once your application is deployed you want start using the swipe gesture to go next/prev through a set of records. This change on other platforms would mean writing some platform specific code to trap and interpret the swipe to perform a navigation (you couldn't trap a swipe on a non-touch screen). However, in Pyxis Mobile this is a simple configuration change that can be quickly deployed to the App Server and the clients automatically download and use the new configuration. No compilation, no redeployment or re-download for the end users.
I could keep going, but hope this provides some level of guidance.
Beware of Pyxis Mobile. While many of the things they say do work, there are some serious platform issues (as a geek) which I've experienced.
1) No version control system process. The Application studio can basically only be developed on by one person at a time or you risk having your changes overwritten by a fellow developer. The "principle of last save" is very much in play.
2) No unit test coverage. This isn't the biggest issue for a lot of people, but it's a concern for anyone who wants to work in the Enterprise world.
3) The middleware server gets you some value, but it's also a PITA to work with. There is no concept of "client side storage" unless you consider the middleware server the client side. If your phone goes out of coverage, your app won't work. Again, this might not be an issue for you.
4) The application has no true scripting language to work with. The middleware server allows you to intercept requests and responses and modify what you're doing there, but it's not the most elegant solution considering that a native application can have something as simple as "if this then X else Y." This can be accomplished with Pyxis, but the whole process is convoluted and more complicated than one would think it needs to be.
5) Lack of documentation. There's some training guides and the GUI is easy enough to get around for simple apps; however, when you need to do something with guts, you're left relying on Pyxis professional services. There's really no developer community to pose questions to.
I have more complaints, but they are more opinion oriented than Q/A oriented.
I just got note about the most recent comments. I don't want to turn this into a thread of back and forth, but did want to throw a couple of quick notes.
Regarding the points on version control and documentation/developer community - no big contest there. We are definitely working on these shortcommings. We have some basic pieces in place, but we have big plans to focus on this.
Regarding unit testing - we provide a very open interface to our middleware and backend components and they can be very easily unit tested with a bit of instrumentation. We run a ton of unit and integration tests internally. However, mobile unit testing is extremely difficult to get right. We'll investigate this further.
Regarding #4 around middleware and offline capabilities - things are a lot different now. With version 7.1, 7.2 and 7.3 our products have increasing become more capabale offline and now features a secure local database if necessary. I can provide more details as necessary, but you can certainly login and operate the app even if you are out of coverage for weeks at a time!
Regarding #5, we've had a scripting engine for over 2 years. Its Lua based and its actually quite powerful and fast. It was BlackBerry only till the most recent release. Given Apple's change of stance on allowing scripting we now allow scripting on BlackBerry, iPad, iPhone and Android as well now!
#RockMeetHardplace - feel free to reach out to me directly and I'll be happy to give you more detailed live demos of our latest platform. I am at - arunSPAMNOTatpyxismobiledotcom (drop the "SPAMNOT" and replace the at and dot). I happen to be the Director of Software and interested in knowing more about the issues you had.

Resources