ionic2のCordovaプラグイン(スクリーンショット)が動作しない
ionic2のスクリーンショット機能を使いたいと思っているのですが、エラーが出て実行されません。
また、スクリーンショットを使った別の方のサンプルをそのままダウンロード、実行してもエラーが出ます。環境の問題とは思うのですが、どう対処すれば良いのかが分かりません。宜しくお願いいたします。
console.log(this.screenshot);
console.log(this.screenshot.save);
this.screenshot.save('jpg', 80, 'myscreenshot.jpg').then(this.onSuccess,
this.onError);
実行時のconsole.log↓
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)
…
以下、私のionicの情報です。
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
package.json
{
"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"
}
宜しくお願いいたします。
追記です。
PlatformをImportし、設定してみました。
そのように変更しましたが、
undefined is not an object(evaluating 'navigator.screenshot.URI')
このようなエラーが出ています。
サンプルではだいたいコンストラクタに設定されていますが、そういう制限はないですよね?
ボタンをクリックされた時に動かしたいと思っています。
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);
});
});
}
また、ionic viewでの実機表示のときのみ表示され、ionic serve時は以前のエラーメッセージと変わりありませんでした。↓
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)
さらに、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は問題なく最後まで動きましたので、この機能の問題である可能性が高まりました。