Ответ 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, .....)
})
}