Плагин Ionic Cordova Social Share - не может прочитать свойство «социальный обмен» неопределенного

Итак, я занимаюсь этим уже 3 дня... Пробовал несколько руководств, таких как эту и пробовал после исходной страницы здесь и тысячу раз прочитать описание на GitHub.

Версии, которые я использую:

$ npm -v
3.7.3

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

$ ionic -v
1.7.14

Ошибка, которую я получаю в браузере Chrome: Не удается прочитать свойство «общий доступ к социальным сетям» неопределенного. На телефоне 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: требование не определено, что находится в строке 1 SocialSharing.js:

var cordova = require('cordova');

Итак, я успешно установил require.sj (npm install -g requirejs), а затем попытался вручную, но появились совершенно разные ошибки.

Пробовал переустанавливать плагин или удалять и снова добавлять платформы, но без изменений.

Не уверен, что это связано, но пытался использовать ngCordova $cordovaFileOpener2, и он всегда выдавал ошибку undefined для Cordova. (На реальном телефоне тоже не работало)

Ценим любую помощь! Спасибо

ОБНОВЛЕНИЕ: я вставил все содержимое файла .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>

person Magor Menessy    schedule 31.03.2016    source источник
comment
Вы пробовали плагин для обмена социальными сетями Cordova? ... если нет, попробуйте установить этот плагин ... cordova-plugin-x-socialsharing   -  person HARITHA UPPARA    schedule 01.04.2016
comment
извините, я вчера устал и забыл упомянуть, но это тот, который я пытался заставить работать :) и да, он установлен   -  person Magor Menessy    schedule 01.04.2016


Ответы (1)


На самом деле плагины предоставляют доступ к функциям устройства и платформы, которые обычно недоступны веб-приложениям. Таким образом, вы не можете достичь функциональности плагина в браузере.

Вы можете достичь на устройстве (android/ios/emulator), используя плагин или файл ngCordova.js.

Использование плагина

Установка: плагин cordova add 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.

<script src="lib/ng-cordova.min.js"></script>

Использование:

.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);
            });
    };
})
person Rjun    schedule 01.04.2016
comment
Я испробовал все возможности комбинации того, что вы предложили, с установкой/удалением cordova-plugin-x-socialsharing, добавлением удаления ng-cordova.js, но безрезультатно. Такая же ошибка появляется в Хроме (неопределенный социальный обмен), а в Андроиде ничего не происходит. Я общаюсь с фб, ватсап, делюсь. - person Magor Menessy; 01.04.2016
comment
попробуйте использовать так, если (window.plugins && window.plugins.socialsharing) {}, он может проверить плагин 1st, а затем выполнить функцию - person Rjun; 01.04.2016
comment
Это помогло мне после серьезной головной боли из-за того, что $window.plugins не был определен с помощью [этой другой версии][1] тем же парнем. Спасибо [1]: github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin - person Chisko; 06.07.2016