Подтвердить что ты не робот

Ионный плагин socialSharing, не работающий на iOS

Плагин Ionic для социального обмена не работает на iOS. Ответ об ошибке возвращает "не доступно". На Android он работает так, как ожидалось. Я что-то делаю неправильно?

// share functions parse accepts 'app' parameter
this.socialSharing.canShareVia(app, this.property.heading, '', '', this.property.link).then(res => {
      this.socialSharing.shareVia(app, this.property.heading, '', '', this.property.link);
}).catch(res => {
      this.gApp.hideLoading();
      this.gApp.showAlert('error', res);
});

// app name is parsed from html
<a (click)="shareVia('facebook')">facebook</a>
...    
<a (click)="shareVia('viber')">viber</a>
4b9b3361

Ответ 1

Прежде всего, вы не разделили всю свою функцию, поэтому я собираюсь сделать некоторые предположения. Согласно их документам, iOS имеет некоторые особенности.

Итак, сначала сначала посмотрим, что означает ваша ошибка. Согласно их документы:

Если Facebook не установлен, ошибка будет вызвана с сообщением 'not available'

Заключение: у вас либо нет приложения, либо вы не используете префикс для iOS (см. ниже)

Отредактируйте config.xml и добавьте следующее:

    <platform name="ios">

        <!-- add this entry -->
        <config-file platform="ios" target="*-Info.plist" parent="LSApplicationQueriesSchemes">
            <array>
                <string>facebook</string>
                <!-- ...... -->
                <string>viber</string>
            </array>
        </config-file>
    </platform>

Чтобы решить ранее упомянутый Quirk, также в соответствии с docs, говоря о shareVia функции quirks:

iOS: вы ограничены 'com.apple.social. [facebook | twitter | синавее | tencentweibo]. Если приложение не существует, errorcallback вызывается, и iOS показывает всплывающее сообщение с запросом пользователя для настройки приложения.

Это в первую очередь означает, что с помощью этой функции shareVia вы можете делиться только facebook, twitter, sinaweibo и tencentweibo (какими бы ни были последние 2)

Во-вторых, вам нужно добавить com.apple.social. перед app

В основном настройка prefix = this.platform.is('ios') ? 'com.apple.social.' : '';, а затем с помощью

import { Platform } from '@ionic-angular';
...
shareVia(app) {
  // only prefix on ios
  let prefix = this.platform.is('ios') ? 'com.apple.social.' : '';

  // NOTE: canShareVia doesn't need the prefix!
  this.canShareVia(app, .....).then(() => {
    // shareVia *does* require the prefix on ios. 
    // This returns 'not available' if the first parameter provided doesn't match an *installed* app.
    this.shareVia(prefix + app, .....)
  })
}

Ответ 2

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

Есть ли другой способ обхода?

Спасибо