【问题标题】:Ionic Cordova Social Share plugin - cannot read property 'socialsharing' of undefinedIonic Cordova 社交分享插件 - 无法读取未定义的属性“社交分享”
【发布时间】:2016-07-20 15:15:12
【问题描述】:

所以我已经做了 3 天了... 试了this一个之类的几个教程,在原页面here之后试了试,把GitHub的描述看了一千遍。

我正在使用的版本:

$ npm -v
3.7.3

$ cordova -v
6.1.0 (cordova-lib@undefined)

$ ionic -v
1.7.14

我在 Chrome 浏览器中遇到的错误:无法读取未定义的属性 'socialsharing'。在 android 或 ios 手机上,如果按下按钮,则不会发生任何事情。甚至没有错误函数调用。

app.js + 控制器:(请注意,我正在尝试使用 window.plugins 而没有 .plugins!)

angular.module('starter', ['ionic', 'ngCordova'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if (window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);

    }
    if (window.StatusBar) {
      // org.apache.cordova.statusbar required
      StatusBar.styleDefault();
    }
  });
})

  .controller('shareCtrl',['$scope',function($scope) {

     $scope.facebookShare=function(){
      window.socialsharing.shareViaFacebook('Digital Signature Maker', null /* img */, "https://play.google.com/store/apps/details?id=com.prantikv.digitalsignaturemaker" /* url */, null, 
        function(errormsg){alert("Error: Cannot Share")});
     }

     $scope.whatsappShare=function(){
      window.plugins.socialsharing.shareViaWhatsApp('Digital Signature Maker', null /* img */, "https://play.google.com/store/apps/details?id=com.prantikv.digitalsignaturemaker" /* url */, null, 
        function(errormsg){alert("Error: Cannot Share")});

}

我什至尝试手动安装,但这里出现了不同的错误。当我将 SocialSharing.js 插入 index.html(在 cordova.js 之前)时,Chrome 控制台说:Uncaught ReferenceError: require is not defined,在 SocialSharing.js 的第 1 行:

var cordova = require('cordova');

所以我成功安装了 require.sj (npm install -g requirejs),然后手动尝试,但出现了完全不同类型的错误。

尝试重新安装插件或删除并再次添加平台,但没有任何变化。

不确定它是否相关,但尝试使用 ngCordova 的 $cordovaFileOpener2 并且那个总是给科尔多瓦未定义的错误。 (在实际手机上也不起作用)

感谢任何帮助! 谢谢

更新: 我已经粘贴了上面所有的 .js 文件内容。

请注意,我已成功安装分享插件:

cordova plugin add cordova-plugin-x-socialsharing
Fetching plugin "cordova-plugin-x-socialsharing" via npm
Installing "cordova-plugin-x-socialsharing" for android

这是我的 index.html:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
    <title></title>

    <link href="lib/ionic/css/ionic.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">

    <!-- ionic/angularjs js -->
    <script src="lib/ionic/js/ionic.bundle.js"></script>

    <!-- cordova script (this will be a 404 during development) -->
    <script src="lib/ng-cordova.min.js"></script>
    <script src="cordova.js"></script>

    <!-- your app's js -->
    <script src="js/app.js"></script>    
  </head>

  <body ng-app="starter">
    <ion-view view-title="Share">
      <ion-content ng-controller="shareCtrl">
        <div class="card">
            <div class="item item-divider">
                <b> Share this app</b>
            </div>
         <ul class="list">
           <li class="item" id="displayLabel">

            <button class="button button-block button-royal item-icon-left" ng-click="whatsappShare()">
                <i class="icon ion-social-whatsapp"></i>
                  WhatsApp
          </button>
          </li>

           <li class="item" id="displayLabel">

            <button class="button button-block button-royal item-icon-left" ng-click="facebookShare()">
                <i class="icon ion-social-twitter"></i>
                  facebook
          </button>
          </li>

          <li class="item" id="displayLabel">     
            <button class="button button-block button-royal item-icon-left" ng-click="OtherShare()">
                 <i class="icon ion-android-share-alt"></i>
                  Other
          </button>
          </li>
        </ul>
        </div>
      </ion-content>
    </ion-view>

  </body>
</html>

【问题讨论】:

  • 您尝试过cordova 社交分享插件吗?...如果没有尝试安装此插件..."cordova-plugin-x-socialsharing"
  • 对不起,我昨天累了,忘了提,但那是我一直在努力工作的那个:) 是的,它已经安装了

标签: node.js cordova ionic-framework cordova-plugins ngcordova


【解决方案1】:

实际上,插件提供了对基于 Web 的应用程序通常无法使用的设备和平台功能的访问。所以你可能无法在浏览器上实现插件功能。

您可以通过使用插件或 ngCordova.js 文件实现在设备上(android/ios/emulator)

使用插件

安装: cordova 插件添加 cordova-plugin-x-socialsharing

用法:

.controller('ShareCtrl', function ($scope) {
    $scope.whatsappShare = function(){
        if(window.plugins.socialsharing) {
        window.plugins.socialsharing.canShareVia('whatsapp',
            'msg', null, null, null,
            function (e) {
                //do something
            },
            function (e) {
               //error occured
            });
       }
    }
})

使用 ng-Cordova

安装:在您的项目中添加 ng-cordova 文件并将其包含在 index.html 文件中

&lt;script src="lib/ng-cordova.min.js"&gt;&lt;/script&gt;

用法:

.controller('ShareCtrl', function ($scope,$cordovaSocialSharing) {
   $scope.shareByWhatsApp = function() {
        $cordovaSocialSharing
            .shareViaWhatsApp('sharedMsg', "", shareAppLink)
            .then(function(result) {
            }, function(err) {
                // An error occurred. Show a message to the user
                alert("error : "+err);
            });
    };
})

【讨论】:

  • 我已经尝试了您提出的所有组合可能性,安装/卸载cordova-plugin-x-socialsharing,添加删除ng-cordova.js,但无济于事。同样的错误出现在 Chrome (socialsharing undef) 中,而在 Android 中没有任何反应。我正在使用 fb、whatsapp、分享。
  • 尝试像这样使用 if(window.plugins && window.plugins.socialsharing) {},它可能会检查插件第一个然后执行功能
  • 这对我有很大帮助,因为$window.plugins 被同一个人使用 [此其他版本][1] 未定义。谢谢[1]:github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多