locked
Win10 UAP : Does Win10Phone support all of UniversalApiContract APIs?

    Question

  • Hi,

    I have a question about 'Guide to Windows Universal Apps'.

    https://msdn.microsoft.com/library/windows/apps/dn894631.aspx

    At the section 'Device families', the document says: "The universal device family APIs are thus guaranteed to be present in every OS and consequently on every device". But, it seems that some of "universal" API have "Operating system requirements".

    For example... "Windows.Data.Pdf".   https://msdn.microsoft.com/en-us/library/windows/apps/windows.data.pdf.pdfdocument.aspx

    This API contract is "Windows.Foundation.UniversalApiContract" and device family is "Universal". But, at the "Requirements(operating system)" says "Minimum supported phone: None supported".

    I'm a little bit confusing. Does Win10 phone support the Windows.Data.Pdf or not?  Does Win10 phone support ALL of UniversalApiContract APIs or support partially?

    Thanks in advance and regards

    pnp0a03

    Monday, April 13, 2015 2:35 PM

Answers

  • I see your point and right now I can tell you that the current state of the documentation is preliminary and more information will be available to you at Build. The general idea is that if the API is Universal - meaning that if you see it through Intellisense in VS, then the API will be present on the OS and not throw a runtime error.

    I will file a doc bug on this.


    Windows Store Developer Solutions, follow us on Twitter: @WSDevSol|| Want more solutions? See our blog

    • Marked as answer by pnp0a03_MVP Thursday, April 16, 2015 11:19 AM
    Thursday, April 16, 2015 1:34 AM
    Moderator
  • Hi, pnp0a03!

    The short answer is that, yes, what you're calling "Win10 phone" supports Windows.Data.Pdf; in fact it supports every API in Windows.Foundation.UniversalApiContract; and it supports every api contract (and therefore every API) in the Universal device family. The Win10 OS SKU for mobile devices (much better thought of as "Win10 mobile" than "Win10 phone") implements a device family called "Mobile", which is a superset of Universal. In fact, EVERY Win10 OS SKU implements a device family that is a superset of Universal. Hence, the "Universal" name is appropriate FOR WIN 1O OSES.

    That's the short answer, but here's more by way of explanation:

    In the "Device families" section of the "Guide to Windows Universal Apps" (to which you provided a link), we say "Windows 8.1 and Windows Phone 8.1 apps target an operating system (OS): either Windows, or Windows Phone. With Windows 10 Technical Preview you no longer target an operating system but target your app instead to one or more device families."

    Operating systems still exist, of course. But what's new for Win10 app development is that YOU NO LONGER TARGET an OS when you build an app. This is a very important change in your conceptual model of what it means to write an app for a "platform" (in 8.1, a "platform" is an OS; in 10, a "platform" is a device family). This is a big change, as I say, and it does take some getting used to.

    If you're building an 8.1 app then you target an OS and there's a section in each API reference topic for you. It's the "Requirements (operating system)" section. Prior to 3/23 this year that section was called "Requirements".

    If you're building a 10 app then you target a device family and there's a section in each API reference topic for you, too. It's the "Requirements (device family)" section and it tells you what device family the API is in and what api contract the API is in.

    The is an OS called "Windows Phone". There is no device family called "Phone", though. So if you reserve the use of the word "Phone" (to mean an app-target) to the times you're talking about the Windows Phone 8.1 OS, and if you get into the habit of saying "Mobile" when you're talking about the new Win10 device family whose name is Mobile, and the OS that is based on that device family, then I think it'll make it easier to remember these two conceptual models (the 8.1 model of targeting an OS and the 10 model of targeting a device family) and it'll be clear to folks when you say "Phone" that you can only mean 8.1

    Cheers!
    Steve


    Steve White

    Tuesday, April 28, 2015 11:22 PM

All replies

  • I see your point and right now I can tell you that the current state of the documentation is preliminary and more information will be available to you at Build. The general idea is that if the API is Universal - meaning that if you see it through Intellisense in VS, then the API will be present on the OS and not throw a runtime error.

    I will file a doc bug on this.


    Windows Store Developer Solutions, follow us on Twitter: @WSDevSol|| Want more solutions? See our blog

    • Marked as answer by pnp0a03_MVP Thursday, April 16, 2015 11:19 AM
    Thursday, April 16, 2015 1:34 AM
    Moderator
  • Hi, pnp0a03!

    The short answer is that, yes, what you're calling "Win10 phone" supports Windows.Data.Pdf; in fact it supports every API in Windows.Foundation.UniversalApiContract; and it supports every api contract (and therefore every API) in the Universal device family. The Win10 OS SKU for mobile devices (much better thought of as "Win10 mobile" than "Win10 phone") implements a device family called "Mobile", which is a superset of Universal. In fact, EVERY Win10 OS SKU implements a device family that is a superset of Universal. Hence, the "Universal" name is appropriate FOR WIN 1O OSES.

    That's the short answer, but here's more by way of explanation:

    In the "Device families" section of the "Guide to Windows Universal Apps" (to which you provided a link), we say "Windows 8.1 and Windows Phone 8.1 apps target an operating system (OS): either Windows, or Windows Phone. With Windows 10 Technical Preview you no longer target an operating system but target your app instead to one or more device families."

    Operating systems still exist, of course. But what's new for Win10 app development is that YOU NO LONGER TARGET an OS when you build an app. This is a very important change in your conceptual model of what it means to write an app for a "platform" (in 8.1, a "platform" is an OS; in 10, a "platform" is a device family). This is a big change, as I say, and it does take some getting used to.

    If you're building an 8.1 app then you target an OS and there's a section in each API reference topic for you. It's the "Requirements (operating system)" section. Prior to 3/23 this year that section was called "Requirements".

    If you're building a 10 app then you target a device family and there's a section in each API reference topic for you, too. It's the "Requirements (device family)" section and it tells you what device family the API is in and what api contract the API is in.

    The is an OS called "Windows Phone". There is no device family called "Phone", though. So if you reserve the use of the word "Phone" (to mean an app-target) to the times you're talking about the Windows Phone 8.1 OS, and if you get into the habit of saying "Mobile" when you're talking about the new Win10 device family whose name is Mobile, and the OS that is based on that device family, then I think it'll make it easier to remember these two conceptual models (the 8.1 model of targeting an OS and the 10 model of targeting a device family) and it'll be clear to folks when you say "Phone" that you can only mean 8.1

    Cheers!
    Steve


    Steve White

    Tuesday, April 28, 2015 11:22 PM
  • Wow, I would like to thank your detailed description about targeting Device Family. I'm looking forward to getting more details about Win10 at //build (via channel9 videos).

    best regards,

    pnp0a03

    PS...Last week, I had a chance to try Windows.Data.Pdf on Win10 'Mobile' bld10052. It works well :)

    Wednesday, April 29, 2015 12:28 AM