Ionic SocialSharing插件iOS端无法使用,报错‘not available’求排查
你的Android端运行正常但iOS卡壳在返回"not available",大概率是iOS平台特有的配置或检测逻辑导致的,我帮你梳理几个最可能的操作失误点:
未配置iOS的URL Scheme白名单
iOS系统要求APP必须在Info.plist里声明要检测的第三方APP的URL Scheme,不然系统会直接返回"不可用"。你需要把用到的社交APP的Scheme添加到LSApplicationQueriesSchemes数组里:
针对Facebook和Viber,你可以在Ionic的config.xml里添加这段配置,之后执行ionic cap sync ios或cordova prepare ios同步到iOS项目:<platform name="ios"> <config-file parent="LSApplicationQueriesSchemes" target="*-Info.plist"> <array> <string>fb</string> <!-- Facebook对应的Scheme --> <string>viber</string> <!-- Viber对应的Scheme --> </array> </config-file> </platform>要是直接编辑iOS项目里的
Info.plist,就找到LSApplicationQueriesSchemes数组(没有的话新建),把对应的Scheme加进去即可。测试设备未安装目标社交APP
iOS的canShareVia检测逻辑比Android更严格——如果设备上没装对应的社交APP,就会直接返回"not available"。而Android可能会有系统级的分享备选(比如跳转网页版),所以你Android端能正常运行。先确认测试的iOS设备上已经安装了Facebook、Viber这些你要分享的APP。插件安装或同步不完整
有时候iOS平台的插件依赖没正确安装,比如你可能只在Android上同步了插件,iOS这边没执行同步操作。试试重新安装插件并同步:ionic cordova plugin remove cordova-plugin-x-socialsharing npm uninstall @ionic-native/social-sharing ionic cordova plugin add cordova-plugin-x-socialsharing npm install @ionic-native/social-sharing ionic cap sync ios # 或执行 cordova prepare ios社交APP的标识拼写错误
虽然你的代码里写的是shareVia('facebook')和shareVia('viber'),但要确认插件在iOS上识别的标识是否正确。cordova-plugin-x-socialsharing确实支持这两个标识,但还是建议你核对一下插件文档,确保标识拼写完全正确(iOS对大小写敏感)。iOS隐私权限声明缺失
这不一定直接导致"not available",但如果后续分享时遇到权限问题,也会影响功能。比如分享到Facebook需要在Info.plist里添加权限说明:<platform name="ios"> <config-file parent="NSFacebookUsageDescription" target="*-Info.plist"> <string>分享内容到Facebook</string> </config-file> </platform>
你可以按照上面的顺序逐一排查,最可能的是前两点——URL Scheme未配置或者设备没装对应APP。
内容的提问来源于stack exchange,提问作者Lasithds

