locked
Что такое привилегированный доступ Windows Phone RRS feed

  • Вопрос

  • Windows.Devices.Sms Namespace

    Примечание  Эта функция доступна только приложениям мобильных операторов и приложениям Магазина Windows, которым предоставлен привилегированный доступ операторами мобильных сетей, адаптером широкополосной сети мобильной связи IHV или изготовителем оборудования (OEM). Дополнительные сведения см. в разделе о широкополосных мобильных устройствах и приложениях Магазина Windows.

    Кто может подсказать, как получить этот доступ на платформе Windows Phone?

    Интересует приложение для корпоративного пользования.

    2 января 2016 г. 7:27

Ответы

  • На стадии создания телефона производителем (OEM) по заданию оператора мобильной сети (или без такого задания) в телефон закладывается особый сертификат. Приложения от ОЕМ/оператора подписывается с использованием данного сертификата. Телефон проверят подпись и разрешает доступ к специальным API.

    Таким образом если вы производитель телефона или оператор то все что вам нужно - правильно подписать приложение.

    Если вы не оператор и не производитель то вам потребуется работать с оператором или производителем. Я никогда о таком не слышал, но но наверное это возможно.

    Кстати, вы в форуме по Windows Phone. А API выше предназначен для Windows 8.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    2 января 2016 г. 20:41
  • Статься все равно по Windows 8, даже если вы имели в виду что то другое.  Стало быть этот функционал доступен только в системах на Windows 8 и старше. Привилегии или нет - в Windows Phone этот API все равно не появится.

    С другой стороны Windows 10 Mobile, которая как известно имеет одно ядро с Windows 10, вполне может его иметь:

    http://wmpoweruser.com/windows-10-mobile-will-let-apps-send-and-receive-sms-messagesis-this-a-good-or-bad/


    This posting is provided "AS IS" with no warranties, and confers no rights.

    3 января 2016 г. 7:01
  • В общем, проблему поборол. Нужно было добавить в Package.appxmanifest пространство имён и дополнительное разрешение на работу с SMS, выглядит это так:

    xmlns:r="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
    

    <r:Capability Name="cellularMessaging" />

    Осталась только проблема с выбором с какой SIM-карты отправлять SMS, т.к. по-умолчанию сообщение уходит со второй карты:

    // string deviceId = @""; // <-- что здесь писать???
    //SmsDevice2 phone = SmsDevice2.FromId(deviceId);
    SmsDevice2 phone = SmsDevice2.GetDefault();
    

    Кто подскажет по поводу deviceId?

    6 января 2016 г. 14:54

Все ответы

  • На стадии создания телефона производителем (OEM) по заданию оператора мобильной сети (или без такого задания) в телефон закладывается особый сертификат. Приложения от ОЕМ/оператора подписывается с использованием данного сертификата. Телефон проверят подпись и разрешает доступ к специальным API.

    Таким образом если вы производитель телефона или оператор то все что вам нужно - правильно подписать приложение.

    Если вы не оператор и не производитель то вам потребуется работать с оператором или производителем. Я никогда о таком не слышал, но но наверное это возможно.

    Кстати, вы в форуме по Windows Phone. А API выше предназначен для Windows 8.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    2 января 2016 г. 20:41
  • Кстати, вы в форуме по Windows Phone. А API выше предназначен для Windows 8.

    Вопрос как раз был относительно Windows Phone / Windows Mobile 10, т.к. необходим функционал на базе мобильного телефона, а не планшетов и т.п.

    Я так понял, что эта ветка namespace становится доступной под WP, благодаря этому "привилегированному доступу".

    3 января 2016 г. 6:12
  • Статься все равно по Windows 8, даже если вы имели в виду что то другое.  Стало быть этот функционал доступен только в системах на Windows 8 и старше. Привилегии или нет - в Windows Phone этот API все равно не появится.

    С другой стороны Windows 10 Mobile, которая как известно имеет одно ядро с Windows 10, вполне может его иметь:

    http://wmpoweruser.com/windows-10-mobile-will-let-apps-send-and-receive-sms-messagesis-this-a-good-or-bad/


    This posting is provided "AS IS" with no warranties, and confers no rights.

    3 января 2016 г. 7:01
  • А не знаете где API найти на Windows 10 Mobile?

    3 января 2016 г. 7:18
  • Скорее всего для Windows 10 Mobile статься вполне подходит. Попробуйте использовать и посмотрите что будет. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    3 января 2016 г. 7:33
  • В общем, поставил 2015 Community студию, создал универсальное приложение, в XAML добавил кнопку с текстовым блоком и следующий обработчик:

    using Windows.Devices.Sms;
    
    private async void Button_Click(object sender, RoutedEventArgs e)
    {
    	try
        {
    		SmsDevice2 phone = SmsDevice2.GetDefault();
    		SmsTextMessage2 sms = new SmsTextMessage2();
    		sms.Body = "TEST";
    		sms.Encoding = SmsEncoding.EightBit;
    		sms.To = "+7903999XXXX";
    		SmsSendMessageResult result = await phone.SendMessageAndGetResultAsync(sms);
    	}
        catch (UnauthorizedAccessException ex)
        {
    		textBlock1.Text = ex.Message;
    		popup1.IsOpen = true;
        }
    }

    В Debug режиме инсталлировал на свой телефон, предварительно выставив режим разработчика.

    Словил ошибку:

    Access is denied. (Exception fron HRESULT: 0x80070005) E_ACCESSDENIED))

    Желание использовать данный функционал для себя не хочет меня покидать, да и к тому же непонятно как разработчикам вести разработку с такими ограничениями, не будут же сами операторы держать парк программистов.

    Как получить доступ к желаемому API?

    6 января 2016 г. 10:38
  • В общем, проблему поборол. Нужно было добавить в Package.appxmanifest пространство имён и дополнительное разрешение на работу с SMS, выглядит это так:

    xmlns:r="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
    

    <r:Capability Name="cellularMessaging" />

    Осталась только проблема с выбором с какой SIM-карты отправлять SMS, т.к. по-умолчанию сообщение уходит со второй карты:

    // string deviceId = @""; // <-- что здесь писать???
    //SmsDevice2 phone = SmsDevice2.FromId(deviceId);
    SmsDevice2 phone = SmsDevice2.GetDefault();
    

    Кто подскажет по поводу deviceId?

    6 января 2016 г. 14:54