

ionic2のスクリーンショット機能を使いたいと思っているのですが、エラーが出て実行されません。  
また、スクリーンショットを使った別の方のサンプルをそのままダウンロード、実行してもエラーが出ます。環境の問題とは思うのですが、どう対処すれば良いのかが分かりません。宜しくお願いいたします。

[code]

    console.log(this.screenshot);
    console.log(this.screenshot.save);
    this.screenshot.save('jpg', 80, 'myscreenshot.jpg').then(this.onSuccess, 
    this.onError);
    
[/code]

実行時のconsole.log↓

[code]

    Screenshot {}
    
    function (format, quality, filename) {
        return new Promise(function (resolve, reject) {
            navigator.screenshot.save(function (error, result) {
                if (error) {
                    …
    
    TypeError: Cannot read property 'save' of undefined
    at index.js:54
    at new t (polyfills.js:3)
    at Screenshot.save (index.js:53)
    at HelloIonicPage.takeScreenShot (hello-ionic.ts:22)
    at Object.eval [as handleEvent] (HelloIonicPage.html:43)
    at handleEvent (core.es5.js:11852)
    at callWithDebugContext (core.es5.js:13060)
    at Object.debugHandleEvent [as handleEvent] (core.es5.js:12648)
    at dispatchEvent (core.es5.js:8830)
    at core.es5.js:9419
    at HTMLButtonElement.<anonymous> (platform-browser.es5.js:2674)
    at t.invokeTask (polyfills.js:3)
    at Object.onInvokeTask (core.es5.js:4136)
    at t.invokeTask (polyfills.js:3)
    at n.runTask (polyfills.js:3)
                   …
    
[/code]

以下、私のionicの情報です。

[code]

    global packages:
    @ionic/cli-utils : 1.3.0
    Ionic CLI        : 3.3.0
    
    local packages:
    @ionic/app-scripts              : 1.3.0
    @ionic/cli-plugin-ionic-angular : 1.3.0
    Ionic Framework                 : ionic-angular 3.0.1
    
    System:
    Node       : v7.10.0
    OS         : Windows 7
    Xcode      : not installed
    ios-deploy : not installed
    ios-sim    : not installed
    
[/code]

package.json

[code]

    {
      "name": "ionic-hello-world",
      "author": "Ionic Framework",
      "homepage": "http://ionicframework.com/",
      "private": true,
      "scripts": {
        "clean": "ionic-app-scripts clean",
        "build": "ionic-app-scripts build",
        "ionic:build": "ionic-app-scripts build",
        "ionic:serve": "ionic-app-scripts serve"
      },
      "dependencies": {
        "@angular/common": "4.0.0",
        "@angular/compiler": "4.0.0",
        "@angular/compiler-cli": "4.0.0",
        "@angular/core": "4.0.0",
        "@angular/forms": "4.0.0",
        "@angular/http": "4.0.0",
        "@angular/platform-browser": "4.0.0",
        "@angular/platform-browser-dynamic": "4.0.0",
        "@ionic-native/core": "^3.4.2",
        "@ionic-native/screenshot": "^3.4.4",
        "@ionic-native/splash-screen": "3.4.2",
        "@ionic-native/status-bar": "3.4.2",
        "@ionic/storage": "2.0.1",
        "ionic-angular": "3.0.1",
        "ionicons": "3.0.0",
        "rxjs": "5.1.1",
        "sw-toolbox": "3.4.0",
        "zone.js": "^0.8.4"
      },
      "devDependencies": {
        "@ionic/app-scripts": "1.3.0",
        "@ionic/cli-plugin-ionic-angular": "1.3.0",
        "typescript": "~2.2.1"
      },
      "cordovaPlugins": [
        "cordova-plugin-whitelist",
        "cordova-plugin-console",
        "cordova-plugin-statusbar",
        "cordova-plugin-device",
        "cordova-plugin-splashscreen",
        "ionic-plugin-keyboard"
      ],
      "cordovaPlatforms": [
        "ios",
        {
          "platform": "ios",
          "version": "",
          "locator": "ios"
        }
      ],
      "description": "screenShot: An Ionic project"
    }
    
[/code]

宜しくお願いいたします。

* * *

追記です。  
PlatformをImportし、設定してみました。

そのように変更しましたが、

[code]

    undefined is not an object(evaluating 'navigator.screenshot.URI')
    
[/code]

このようなエラーが出ています。  
サンプルではだいたいコンストラクタに設定されていますが、そういう制限はないですよね？  
ボタンをクリックされた時に動かしたいと思っています。

[code]

    onClickSS(){
      this.platform.ready().then(() => {
        this.screenshot.URI(80)
        .then( res => {
          console.log('ok');
        })
        .catch((e) => {
          let confirm = this.alertCtrl.create({
            title: 'ss Err',
            subTitle: e,
            buttons: ['OK']
          });
          confirm.present();
          console.error(e);
        });
      });    
    }
    
[/code]

また、ionic viewでの実機表示のときのみ表示され、ionic serve時は以前のエラーメッセージと変わりありませんでした。↓

[code]

    myset-result.ts:170 TypeError: Cannot read property 'URI' of undefined
    at index.js:73
    at new t (polyfills.js:3)
    at Screenshot.URI (index.js:72)
    at myset-result.ts:140
    at t.invoke (polyfills.js:3)
    at Object.onInvoke (core.es5.js:4145)
    at t.invoke (polyfills.js:3)
    at n.run (polyfills.js:3)
    at polyfills.js:3
    at t.invokeTask (polyfills.js:3)
    at Object.onInvokeTask (core.es5.js:4136)
    at t.invokeTask (polyfills.js:3)
    at n.runTask (polyfills.js:3)
    at a (polyfills.js:3)
    at HTMLButtonElement.invoke (polyfills.js:3)
    
[/code]

さらに、setTimeoutで時間をずらすという解答も別のページで見たのですが、変化はありませんでした。

* * *

追記  
インストールされているようですね。。

> cordova plugin ls  
>  ✔ Running command - done!  
>  com.darktalker.cordova.screenshot 0.1.5 "Screenshot"  
>  cordova-plugin-admobpro 2.28.3 "AdMob Plugin Pro"  
>  cordova-plugin-console 1.0.5 "Console"  
>  cordova-plugin-device 1.1.4 "Device"  
>  cordova-plugin-extension 1.5.1 "Cordova Plugin Extension"  
>  cordova-plugin-splashscreen 4.0.2 "Splashscreen"  
>  cordova-plugin-statusbar 2.2.1 "StatusBar"  
>  cordova-plugin-whitelist 1.3.1 "Whitelist"  
>  cordova-sqlite-storage 2.0.3 "Cordova sqlite storage plugin"  
>  ionic-plugin-keyboard 2.2.1 "Keyboard"

また、同じくNativeのsocialSharingは問題なく最後まで動きましたので、この機能の問題である可能性が高まりました。


CC BY-SA 3.0
2017-06-08T00:46:15.493
35377
2017-06-12T10:10:52.117
2017-06-12T10:10:52.117
20272
23637
question
cordova ionic2
ionic2のCordovaプラグイン(スクリーンショット)が動作しない


以下のいずれか、または複数が原因の可能性があります。

* * *

## 原因①：デバイス側の準備が完了する前にプラグインの処理を実行している

[このページ](https://ionicframework.com/docs/native/)にあるように`ionic-
native`の機能は全て`platform.ready()`が完了してから呼び出すようにしてください。  
デバイス側の準備ができていない段階では`screenshot`インスタンスが生成されていません。  
そのため、`navigator.screenshot`が`undefined`のままで参照エラーが発生しています。

* * *

## 原因②：該当するCordovaのプラグインが適用されていない

該当するCordovaのプラグイン(Screenshot)がインストールされているかご確認ください。

[code]

    ionic cordova plugin list
    
[/code]

Screenshotのプラグインがインストールされていれば一覧の中に以下が含まれています。

> com.darktalker.cordova.screenshot 0.1.5 "Screenshot"

含まれていなければ[IonicのScreeshotのページ](https://ionicframework.com/docs/native/screenshot/)を参考にプラグインをインストールしてください。  
@ionic-nativeは全てCordovaプラグインに依存します。  
該当するCordovaプラグインをインストールしていない場合は動作しません。

[code]

    ionic cordova plugin add https://github.com/gitawego/cordova-screenshot.git
    
[/code]

* * *

## 原因③：ネイティブコードを含めた環境でビルド/実行していない

Cordovaのプラグインはデバイスの機能を使うため、ionic serveでは動かないプラグインがほとんどです。実機でご確認ください。  
また動作確認に、Ionic viewを使用されている場合は、Ionic
viewが[サポートしているプラグイン](https://docs.ionic.io/tools/view/#supported-
plugins)しか動きません。Screenshotは含まれていないようです。  
コマンドラインから`ionic cordova run <platform>`で実行してください


CC BY-SA 3.0
2017-06-08T05:47:54.987
35386
2017-06-12T07:26:07.863
2017-06-12T07:26:07.863
20272
20272
35377
answer