What is the best way to write for iPhone, Android and Windows phone ? If I'm writing in C# and using Xamarin will my app run on the windows phone as well ?
You can share any code written with the BCLs that are included with Xamarin (or any library built on top of those).
You will then need to write a custom Windows Phone application that uses those libraries. It is easiest to think of this as the "UI" of your application. You cannot share UI code between iOS, Android, and Windows Phone.
The MWC app is probably the best example of how to architect a solution that spans the 3 platforms.
Related
I have a couple quick questions about Windows Phone applications. How does one know the type of Windows Phone application? For example, is the WP email client XAML or Silverlight?
The reason I am asking is that I have been assigned the task of writing some automated testing scripts for an already developed application (or WP core app) and I'm not sure which automated scripting method to use (CodedUI vs VSTO Test UI). It's my understanding that CodedUI only works for XAML based applications.
Thanks!
From just looking at the app I don't think there is anyway to tell. However, whether it is SilverLight or new Store App (appx) they both support XAML. If you have the source code you can load it in Visual Studio. After the project name you will see:
Windows Phone 8.1 Silverlight
Windows Phone 8.1
The second one is the newer Store App possibly a Universal App.
If you need to know if it is xaml then certianly asking the developer will be the easiest option. I assume they are both XAML no matter what as I am not aware that WinJS is supported for phone.
One other option that could help you get to what you need to know is if you have the executables. Silverlight will be an XAP file extension and the new Store App will be have an APPX file extension.
Good luck & Have fun,
Tom
I have a Windows Phone 8.1 Silverlight application which is in the store now. Since i see that Microsoft is moving all the attention towards WINRT and Universal Apps, i suspect that there will be limited or no support for Silverlight Apps in Windows 10.
There might be a tablet project that i might roll out for the same project in the future. So i am in the dilemma to convert the Silveright projects in my solution to WINRT or convert them into Universal Apps.Also, i hear that converting to Universal projects are pretty hard as well.And I understand that the bulk of the work will be in porting the UI to Hub Style UI.
Any ideas? Comments on the best approach to take here.
A WinRT app is a Windows only app (not for Phone). Other than that, WinRT and Universal apps are quite similar. They have the same namespaces, classes, controls... almost everything. You can use many WinRT libraries in Universal apps without any problem. And so, porting to them is generally the same, too.
Windows Store and Windows Phone apps generally need different UI anyway, so you would have to work on that, no matter what you do.
One difference is that a WinRT app would work on Windows 8.0 and up, and a Universal app would require Windows 8.1 (or WP 8.1 for phones). Actually, a Windows 8.1 app IS a Universal app. Just like a Windows Phone 8.1 app (not the Silverlight variation) is a Universal app.
I'd recommend porting to a Universal app as you would get used to working with these apps, and they work on both platforms (Windows and Phone). For any future project, that's the way to go.
In the company I work for, we switched to Universal apps a few months ago. Figuring out what UI we would use on both platforms and how to do it properly, as well as porting our existing libraries did take some time (not too much), but now making a new app and supporting both platforms is very easy. So, for me, that's the way to go.
It is quite unlikely that Microsoft will stop supporting Silverlight Apps in the Windows 10 version for phones. Even WP8.1 still supports XNA Games from the WP7.0 era.
Depending on the APIs you are using in your libraries the majority of changes when converting from Silverlight to WinRT will be on the UI side, e.g. if your Silverlight App already uses the LocalStorage-APIs instead of the IsolatedStorage-APIs that won't even have to be changed.
My advice would be the following:
evaluate wether all functionality you need is supported in Universal Apps (some functionality is currently only available in Silverlight Apps)
evaluate wether the actual APIs you are using are supported in Universal Apps or need to be replaced (IsolatedStorage => LocalStorage, etc.)
Armed with that knowledge I'd guess you will be able to better plan on when to port your App to the new APIs. If a tablet version is likely in the future and all required APIs are supported in the Universal App Model porting sooner will likely require less effort than porting later.
I begin to use windows phone 8.1 SDK but there are some strange things i don't understand, one of this complicated things why there are different frameworks Silverlight and the default xaml, also what is the difference between them and when i use this or this ?
One huge difference is of course that the Store Apps supports Universal Apps, where you can easily share almost all all of the code across WP8.1 and Windows 8.1 (including XAML).
But it is Worth noting that there are several features which some apps might require which is only available for WP8.1 Silverlight apps, such as:
VoIP support
Act as Lock screen background provider
Act as a Lens app
Let app extend search results using search extras
Provide ringtones
And a few other listed here along with a feature mapping from WP8 to WP8.1 Silverlight and Store Apps: http://msdn.microsoft.com/en-us/library/windowsphone/develop/dn642486(v=vs.105).aspx
If you are starting a new app and will not need any of these features a Store app is probably the better choice though.
If I understand your question correctly, let me put some sentences from MSDN...
why there are different frameworks Silverlight and the default xaml,
also what is the difference between them and when i use this or this ?
In Visual Studio 2013 Microsoft has come up with an approach where you can build Apps for
Phone as well as for Desktop and tabs simultaneously. A unique concept of Universal Apps.
Build an app for Windows 8.1 and Windows Phone 8.1 at the same time,
and share code, user controls, styles, strings and other assets between them
So if you are going to develop an Apps targeting both the platform, then Universal apps concept is good.
But if you are targeting only the new features of Windows Phone 8.1 then you should start with Silverlight "Blank App (Windows Phone Silverlight)"
As in MSDN its clearly mentioned.
The names of some templates have (Windows Phone Silverlight) appended
to the end. Consider using these templates if you've previously developed
for Windows Phone 8 and just want to access some of the new features available
to Windows Phone apps without having to significantly modify your existing
code. You can use these templates to create apps only for Windows Phone 8.1
More details MSDN Link
Windows Phone Silverlight is Windows Phone 8 deployments where obviously the WP 8.1 is deployment for WP 8.1
The main difference is that the WP 8.1 can use the cross platform DLLs where as WP 8 can not. There are many other framework differences but this is a huge one.
As we know there is posibility to create three types of windows 8.1 applications: desktop, phone, and universal. So, I have a win 8.1 application which was obviusly built for desktop, but I wanna change its type to phone or universal, how can I do it?
Sounds like you are moving towards cross platform development. I recommend using a java base library like libgdx. My app runs on Windows,Macs,Android phones/tablets, and Iphones/Ipads. Its all one code base but for many different platforms. I've very happy with the results. I'm mainly a c# dev so there was a small learning curve moving to java. I dont know if there is something similar that will run on windows phone. Good luck.
Is there any way to open Windows 8.1 native camera application programatically in c#.
Basically WinRT doesn't allow that, Metro Apps run in the highly sandboxed environment, you can't open a a Metro nor a desktop one directly, you may find using the Launcher class from Windows.System.Launcher somehow helpful , take a look at this thread :
http://social.msdn.microsoft.com/Forums/windowsapps/en-US/b38bb2de-2a05-4f7d-8547-48b9759d72d4/can-i-use-windowssystemlauncherlauncherdefaultprogramuri-to-invoke-another-metro-style-app?forum=winappswithhtml5