Je viens de mettre en place ma première application ionic 2 (j'ai utilisé ionic 1 assez souvent). J'essaie d'utiliser le plug-in de prévisualisation caméra ionique native .
La configuration était assez simple:
npm install -g ionic cordova
ionic start timesnap --v2
ionic platform add Android
ionic platform add ios
ionic plugin add cordova-plugin-camera-preview --save
Puis j'ai copié et collé l'exemple de code dans la page à propos:
import { CameraPreview, CameraPreviewRect } from 'ionic-native';
// camera options (Size and location)
let cameraRect: CameraPreviewRect = {
x: 100,
y: 100,
width: 200,
height: 200
};
// start camera
CameraPreview.startCamera(
cameraRect, // position and size of preview
'front', // default camera
true, // tap to take picture
false, // disable drag
true, // send the preview to the back of the screen so we can addoverlaying elements
1 //alpha
);
J'ai lancé l'application en utilisant les commandes suivantes:
ionic emulate Android -lcs
ionic emulate ios -lcs --target='iPhone-6'
Au début, la caméra n'apparaissait tout simplement pas, puis j'ai exécuté chrome://inspect
et vu les avertissements concernant l'absence de Cordova "essayez de fonctionner avec un émulateur", mais cela se faisait lors de l'exécution avec un émulateur Android. J'ai aussi essayé iOS et j'ai vu les mêmes résultats.
Des idées pourquoi cordova ne charge pas?
Voici le journal complet des erreurs de chrome://inspect
lors de l'exécution dans un émulateur Android:
Mise à jour ... index.html
(c'est juste le standard généré par ionic)
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<title>Ionic App</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<link rel="icon" type="image/x-icon" href="assets/icon/favicon.ico">
<link rel="manifest" href="manifest.json">
<meta name="theme-color" content="#4e8ef7">
<!-- cordova.js required for cordova apps -->
<script src="cordova.js"></script>
<!-- un-comment this code to enable service worker
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('service-worker.js')
.then(() => console.log('service worker installed'))
.catch(err => console.log('Error', err));
}
</script>-->
<link href="build/main.css" rel="stylesheet">
</head>
<body>
<!-- Ionic's root component and where the app will load -->
<ion-app class="trans"></ion-app>
<!-- The polyfills js is generated during the build process -->
<script src="build/polyfills.js"></script>
<!-- The bundle js is generated during the build process -->
<script src="build/main.js"></script>
</body>
</html>
Livereload ne parvient pas à servir le fichier cordova.js et sert le fichier // simulé cordova lors du développement.
CORRECTIF: vous devez aller à node_modules/@ionic/app-scripts/dist/dev-server/serve-config.js
et remplacer
exports.Android_PLATFORM_PATH = path.join('platforms', 'Android', 'assets', 'www');
à
exports.Android_PLATFORM_PATH = path.join('platforms', 'Android', 'app', 'src', 'main', 'assets', 'www');
C'est assez tard, mais toute personne rencontrant le même problème pourrait bénéficier de cette réponse. Essayez d'abord d'ajouter un navigateur en exécutant la commande ci-dessous ionic platform add browser
puis exécutez la commande ionic run browser
.
quelle est la différence entre
ionic serve and ionic run browser
?Ionic serve - exécute votre application en tant que site Web (ce qui signifie qu'elle ne possède pas de fonctionnalités Cordova). Ionic run browser - lance votre application dans le Cordova plate-forme de navigateur, qui injectera cordova.js et tous les plugins qui avoir des capacités de navigateur
Vous pouvez consulter ce lien pour en savoir plus sur la différence entre les commandes ionic serve
et ionic run browser
Mettre à jour
De Ionic 3, cette commande a été modifiée. Utilisez plutôt la commande ci-dessous.
ionic cordova platform add browser
ionic cordova run browser
Vous pouvez trouver la version de ionic que vous utilisez en exécutant: ionic --version
Vous avez peut-être manqué une étape ... Avez-vous déjà créé la plate-forme avant de l'imiter?
ionic cordova build Android
ionic cordova build ios
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { EmailComposer } from '@ionic-native/email-composer';
@Component({
selector: 'page-about',
templateUrl: 'about.html'
})
export class AboutPage {
sendObj = {
to: '',
cc: '',
bcc: '',
attachments:'',
subject:'',
body:''
}
constructor(public navCtrl: NavController,private emailComposer: EmailComposer) {}
sendEmail(){
let email = {
to: this.sendObj.to,
cc: this.sendObj.cc,
bcc: this.sendObj.bcc,
attachments: [this.sendObj.attachments],
subject: this.sendObj.subject,
body: this.sendObj.body,
isHtml: true
};
this.emailComposer.open(email);
}
}
starts here html about
<ion-header>
<ion-navbar>
<ion-title>
Send Invoice
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<ion-item>
<ion-label stacked>To</ion-label>
<ion-input [(ngModel)]="sendObj.to"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>CC</ion-label>
<ion-input [(ngModel)]="sendObj.cc"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>BCC</ion-label>
<ion-input [(ngModel)]="sendObj.bcc"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Add pdf</ion-label>
<ion-input [(ngModel)]="sendObj.attachments" type="file"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Subject</ion-label>
<ion-input [(ngModel)]="sendObj.subject"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Text message</ion-label>
<ion-input [(ngModel)]="sendObj.body"></ion-input>
</ion-item>
<button ion-button full (click)="sendEmail()">Send Email</button>
</ion-content>
other stuff here
import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { AboutPage } from '../pages/about/about';
import { ContactPage } from '../pages/contact/contact';
import { HomePage } from '../pages/home/home';
import { TabsPage } from '../pages/tabs/tabs';
import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';
import { File } from '@ionic-native/file';
import { FileOpener } from '@ionic-native/file-opener';
import { EmailComposer } from '@ionic-native/email-composer';
@NgModule({
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage
],
providers: [
StatusBar,
SplashScreen,
EmailComposer,
{provide: ErrorHandler, useClass: IonicErrorHandler},
File,
FileOpener
]
})
export class AppModule {}
J'ai aussi eu le même problème.
Je construis le fichier .apk du projet et l’installe dans un téléphone mobile (Android) et je le fais fonctionner