Плагин Ionic socialSharing не работает на iOS - PullRequest
0 голосов
/ 15 мая 2018

Плагин 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>

1 Ответ

0 голосов
/ 24 мая 2018

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

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

Если Facebook не установлен, обратный вызов ошибки будет вызван сообщением «недоступен»

Вывод: у вас либо приложение не установлено, либо вы не используете префикс для 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>

Для решения ранее упомянутой Причуды, также согласно документам , говорим о shareVia причудах функций:

iOS: вы ограничены 'com.apple.social. [Facebook | щебетать | синавейбо | 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, .....)
  })
}
...