Quantcast
Channel: Ionic Forum - Latest topics
Viewing all 71531 articles
Browse latest View live

Multiple selectable items in Ionic


Apple Says April is Last Date for UIWebView

$
0
0

@LacOniC wrote:

Is Ionic & Cordova ready for this? Most important problem right now. :confused:

ITMS-90809: Deprecated API Usage — Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer. apple .com/ documentation /uikit/uiwebview for more information.

From Ionic Blog:

The Cordova team has [released Cordova iOS 5.1.0], which disables UIWebview at compile time. To use it, ensure you have a WKWebView plugin installed, then add <preference name="WKWebViewOnly" value="true" /> to your config.xml file. Complete details below.

Is this a definitive solution for all projects?

Posts: 1

Participants: 1

Read full topic

Video Captured But that Video not Retrieve(show) the html Page

$
0
0

@pamzz wrote:

Capture the video and store into local storage but could not retrieve the html page video tag

HtML Page

<ion-content>

  <div class="container">

  <h2>Upload Video</h2>

  <ion-button expand="full" (click)="captureVideo()">Capture Video</ion-button>
</div>


<ion-list>

  <ion-item *ngFor="let file of mediaFiles" tappable (click)="playFile(file)" text-wrap>

    {{file.name}}

    <p>{{file.size / 1000 / 1000 | number}} MB</p>

  </ion-item>

</ion-list>

<video controls autoplay #myvideo></video>

</ion-content>

Last video control tag could not display the captured video

TS page


export class UploadVideoPage implements OnInit {

  @ViewChild('myvideo', { static: true }) myVideo:any;

  mediaFiles=[];

  datastorage:any;



  constructor(private router:Router,



    private storage:Storage,

    private navCtrl:NavController,

    private mediaCapture:MediaCapture,

    private media:Media,

    private file:File

    ) {

    

     }

  ngOnInit() {

  }

  ionViewDidLoad(){

    this.storage.get(MEDIA_FILES_KEY).then(res=>{

      this.mediaFiles=JSON.parse(res) ||[];

    });

  }

  captureVideo(){

          let options:CaptureVideoOptions={

            limit:1,

            duration:30

          }

          this.mediaCapture.captureVideo(options).then((res:MediaFile[])=>{

          let  capturedFile=res[0];

          console.log('my file:' , capturedFile);

          let fileName=capturedFile.name;

          let dir=capturedFile['localURL'].split('/');

          dir.pop();

          let fromDirectory = dir.join('/');

          let toDirectory=this.file.dataDirectory;

          this.file.copyFile(fromDirectory,fileName,toDirectory,fileName).then(res=>{

        //  let url=res.nativeURL.replace(/^file:\/\//,'');

          this.storeMediaFiles([{name:fileName,size: capturedFile.size}]);

          });

          });

  }

  play(myFile){

    console.log('play:',myFile);

    if(myFile.name.indexOf('.wav')>-1){

      const audioFile:MediaObject = this.media.create(myFile.localURL);

      audioFile.play();

    }else{

      let path=this.file.dataDirectory+myFile.name;

      let url=path.replace(/^file:\/\//,'');

      let video=this.myVideo.nativeElement;

      video.src=url;

      video.play();

    }

  }

  storeMediaFiles(files){

    console.log('store:',files);

    this.storage.get(MEDIA_FILES_KEY).then(res=>{

if(res){

let arr=JSON.parse(res);

arr = arr.concat(files);

this.storage.set(MEDIA_FILES_KEY,JSON.stringify(arr));

}else{

  this.storage.set(MEDIA_FILES_KEY,JSON.stringify(files));

}

this.mediaFiles=this.mediaFiles.concat(files);

    })

  }
}

config.xml


<edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">

        <string>We would like to access your camera for recording</string>

    </edit-config>

    <edit-config file="*-Info.plist" mode="merge" target="NSMicrophoneUsageDescription">

        <string>We would like to access your microphone for recording</string>

    </edit-config>

Posts: 1

Participants: 1

Read full topic

Currency mask for Ionic 3

$
0
0

@MatheusMinguini wrote:

I need to have a “ion-input” which has a money mask.

I have tried many packages available in the market, such as:

“ngx-currency-mask”
"“brmasker-ionic-3”

None of them seem to work so far. The “ngx-currency” only works for tags and the “brmasker” gives me the number like 2,570,75 and the JS cannot parse it into a float without losing the decimal point.

Does anyone know a nice directive to perform such a simple thing as formatting a currency value?
Thanks in advance

Posts: 1

Participants: 1

Read full topic

Livereload problem: ReferenceError: process is not defined

$
0
0

@Hanzo wrote:

Hi,

I am trying to launch my Ionic 4 app in device livereload mode:

ionic cordova run android --l --c

When the is launched the inspector console shows this error:

index.js:43 Uncaught ReferenceError: global is not defined
    at Object../node_modules/node-libs-browser/node_modules/buffer/index.js (index.js:43)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/safe-buffer/index.js (index.js:2)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/randombytes/browser.js (browser.js:15)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/crypto-browserify/index.js (index.js:3)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/@auth0/cordova/src/crypto.js (crypto.js:1)
    at __webpack_require__ (bootstrap:84)

If add (window as any).global = window; to polyfills.ts file I get the next error:

Uncaught ReferenceError: Buffer is not defined
    at Object../node_modules/core-util-is/lib/util.js (util.js:103)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/readable-stream/lib/_stream_readable.js (_stream_readable.js:67)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/readable-stream/readable-browser.js (readable-browser.js:1)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/stream-browserify/index.js (index.js:28)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/hash-base/index.js (index.js:3)
    at __webpack_require__ (bootstrap:84)

If add window.Buffer = window.Buffer || require('buffer').Buffer; to polyfills.ts file I get the next error:

Uncaught ReferenceError: process is not defined
    at Object../node_modules/readable-stream/lib/_stream_writable.js (_stream_writable.js:57)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/readable-stream/readable-browser.js (readable-browser.js:4)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/stream-browserify/index.js (index.js:28)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/hash-base/index.js (index.js:3)
    at __webpack_require__ (bootstrap:84)
    at Object../node_modules/md5.js/index.js (index.js:3)
    at __webpack_require__ (bootstrap:84)

If I launch the app without livereload it works fine. ¿Can someone help me?

This is my Ionic info:

Ionic:

   Ionic CLI                     : 6.1.0 (/usr/local/lib/node_modules/@ionic/cli)
   Ionic Framework               : @ionic/angular 4.11.10
   @angular-devkit/build-angular : 0.803.25
   @angular-devkit/schematics    : 8.1.3
   @angular/cli                  : 8.3.25
   @ionic/angular-toolkit        : 2.2.0

Cordova:

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms : android 8.1.0
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.3, (and 9 other plugins)

Utility:

   cordova-res : 0.9.0
   native-run  : 0.3.0

System:

   Android SDK Tools : 26.1.1 (/Users/myuser/Library/Android/sdk)
   ios-deploy        : 1.10.0
   ios-sim           : 6.1.2
   NodeJS            : v10.16.1 (/usr/local/bin/node)
   npm               : 6.9.0
   OS                : macOS Catalina
   Xcode             : Xcode 11.3.1 Build version 11C504

Thanks

Posts: 1

Participants: 1

Read full topic

Iframe scroll not function

$
0
0

@matador09 wrote:

I tried to embed a mobile website to my ionic app.
As example I use an iFrame to embed the homepage.
my embed url as below

<iframe data-tap-disabled="true" src="https://bigdata.feldaglobal.com/zoomdata/visualization/5e4bb26de4b05ce5a9528f4e?__target=widget&key=5e582e88e4b05ce5aa088bec" style="overflow: scroll; height: 100%; width: 100%"></iframe>

But the scroll for embedded url doesn’t work. Can anyone help

Thanks
Idzham

Posts: 1

Participants: 1

Read full topic

How to run a task after completing iOS build?

$
0
0

@smalwatte wrote:

I added an after_build hook and it works in Android. But it does not work in iOS since iOS build does not use Cordova commands to build the ipa.
I want to run appcenter-cli commands to upload the builds to appcenter.
Anyone knows how to do it?

Thanks

Posts: 1

Participants: 1

Read full topic

Login Error: There is an error in logging you into this application. Please try again later in devices with android 9

$
0
0

@feliperiverot wrote:

I developed an app with Ionic 4. I added a facebook login. Testing the add I saw that the facebook login fails in devices with android 9, with this message:“Login Error: There is an error in logging you into this application. Please try again later”.

enter image description here

But the login works well with device with android 5,6 and 7.

This is my ionic specifications:

enter image description here

And I build the app with android sdk 8: enter image description here

This is my code:

import { Component } from '@angular/core';
import { FormGroup, FormBuilder, Validators } from "@angular/forms";
import { Router } from '@angular/router';
import { NativeStorage } from '@ionic-native/native-storage/ngx';
import { Facebook, FacebookLoginResponse } from '@ionic-native/facebook/ngx';
import { GooglePlus } from '@ionic-native/google-plus/ngx';



@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage {
      ionicForm: FormGroup= this.formBuilder.group({
    email: ['', [Validators.required, Validators.pattern('[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}]
    keyuser: ['', [Validators.required, Validators.minLength(6), Validators.pattern('^(?=.*[0-9])(?=.*[a-z])([a-z0-9_-]+)
isSubmitted = false;
emailvalue:any;
passclave:any;
emailusuario = "";
isLoggedIn = false;
users = { id: '', name: '', email: '', picture: { data: { url: '' } } };

constructor( public formBuilder: FormBuilder, private router: Router, private nativeStorage: NativeStorage,private fb: Facebook, private googlePlus:GooglePlus ) {
this.nativeStorage.getItem(‘email’)
.then(
data => this.emailusuario=data,
error => console.error(error)
);

fb.getLoginStatus()
.then(res => {
console.log(res.status);
if (res.status === ‘connect’) {
this.isLoggedIn = true;
this.router.navigateByUrl("/tutorial");
} else {
this.isLoggedIn = false;
}
})
.catch(e => console.log(e));

}

get errorControl() {
return this.ionicForm.controls;
}

register() {

   if(this.isSubmitted){
       this.isSubmitted=false;
   }

this.isSubmitted = true;

if (!this.ionicForm.valid) {
console.log(‘Please provide all the required values!’)
return false;
} else {
console.log(this.ionicForm.value)
var a =this.ionicForm.value;

this.nativeStorage.getItem('email')

.then(
data => this.emailvalue=data,
error => console.error(error)
);

this.nativeStorage.getItem(‘keyuser’)
.then(
data => this.passclave=data,
error => console.error(error)
);

if( a.email.trim() == this.emailvalue && a.keyuser.trim() == this.passclave ){
    this.router.navigateByUrl("/tutorial");
}

}
}

fbLogin() {

this.fb.login([‘public_profile’, ‘user_friends’, ‘email’])
.then(res => {
if (res.status === ‘connected’) {
this.isLoggedIn = true;
this.getUserDetail(res.authResponse.userID);
this.router.navigateByUrl("/tutorial");
} else {
this.isLoggedIn = false;
}
})
.catch(e => console.log(‘Error logging into Facebook’, e));
}

getUserDetail(userid: any) {
this.fb.api(’/’ + userid + ‘/?fields=id,email,name,picture’, [‘public_profile’])
.then(res => {
console.log(res);
this.users = res;
})
.catch(e => {
console.log(e);
});
}

logout() {
this.fb.logout()
.then( res => this.isLoggedIn = false)
.catch(e => console.log(‘Error logout from Facebook’, e));
}

async doGoogleLogin(){

this.googlePlus.login({
    'scopes': '', // optional, space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
    'webClientId': '1021194051942-l3a9pra25mto4dd6lpjaos9p7i3t9dj1.apps.googleusercontent.com', // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
    'offline': true // Optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
})
.then(user =>{


    this.nativeStorage.setItem('google_user', {
        name: user.displayName,
        email: user.email,
        picture: user.imageUrl
    })
    .then(() =>{
        this.router.navigateByUrl("/tutorial");
    }, error =>{
        this.router.navigateByUrl("/tutorial");
    })

}, err =>{
    this.router.navigateByUrl("/tutorial");

});

}

doGoogleLogout(){
this.googlePlus.logout()
.then(res =>{
//user logged out so we will remove him from the NativeStorage
this.nativeStorage.remove(‘google_user’);
this.router.navigateByUrl("/home");
}, err =>{
console.log(err);
})
}

}


0


I developed and app with Ionic 4. I added a facebook login. Testing the add I saw that the facebook login fails in devices with android 9, with this message:"Login Error: There is an error in logging you into this application. Please try again later".

enter image description here

But the login works well with device with android 5,6 and 7.

This is my ionic specifications:

enter image description here

And I build the app with android sdk 8: enter image description here

This is my code:

import { Component } from '@angular/core';
import { FormGroup, FormBuilder, Validators } from "@angular/forms";
import { Router } from '@angular/router';
import { NativeStorage } from '@ionic-native/native-storage/ngx';
import { Facebook, FacebookLoginResponse } from '@ionic-native/facebook/ngx';
import { GooglePlus } from '@ionic-native/google-plus/ngx';



@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})
export class HomePage {
      ionicForm: FormGroup= this.formBuilder.group({
    email: ['', [Validators.required, Validators.pattern('[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$')]],
    keyuser: ['', [Validators.required, Validators.minLength(6), Validators.pattern('^(?=.*[0-9])(?=.*[a-z])([a-z0-9_-]+)$')]]
});


    isSubmitted = false;
    emailvalue:any;
    passclave:any;
    emailusuario = "";
    isLoggedIn = false;
    users = { id: '', name: '', email: '', picture: { data: { url: '' } } };


  constructor( public formBuilder: FormBuilder, private router: Router, private nativeStorage: NativeStorage,private fb: Facebook,   private googlePlus:GooglePlus ) {
        this.nativeStorage.getItem('email')
  .then(
    data => this.emailusuario=data,
    error => console.error(error)
  );


   fb.getLoginStatus()
  .then(res => {
    console.log(res.status);
    if (res.status === 'connect') {
      this.isLoggedIn = true;
      this.router.navigateByUrl("/tutorial");
    } else {
      this.isLoggedIn = false;
    }
  })
  .catch(e => console.log(e));


  }



  get errorControl() {
  return this.ionicForm.controls;
}

   register() {

       if(this.isSubmitted){
           this.isSubmitted=false;
       }

    this.isSubmitted = true;
  if (!this.ionicForm.valid) {
    console.log('Please provide all the required values!')
    return false;
  } else {
    console.log(this.ionicForm.value)
    var a =this.ionicForm.value;

    this.nativeStorage.getItem('email')
  .then(
    data => this.emailvalue=data,
    error => console.error(error)
  );

  this.nativeStorage.getItem('keyuser')
  .then(
    data => this.passclave=data,
    error => console.error(error)
  );

    if( a.email.trim() == this.emailvalue && a.keyuser.trim() == this.passclave ){
        this.router.navigateByUrl("/tutorial");
    }



  }
  }


    fbLogin() {
  this.fb.login(['public_profile', 'user_friends', 'email'])
    .then(res => {
      if (res.status === 'connected') {
        this.isLoggedIn = true;
        this.getUserDetail(res.authResponse.userID);
        this.router.navigateByUrl("/tutorial");
      } else {
        this.isLoggedIn = false;
      }
    })
    .catch(e => console.log('Error logging into Facebook', e));
}

getUserDetail(userid: any) {
  this.fb.api('/' + userid + '/?fields=id,email,name,picture', ['public_profile'])
    .then(res => {
      console.log(res);
      this.users = res;
    })
    .catch(e => {
      console.log(e);
    });
}

logout() {
  this.fb.logout()
    .then( res => this.isLoggedIn = false)
    .catch(e => console.log('Error logout from Facebook', e));
}




async doGoogleLogin(){


    this.googlePlus.login({
        'scopes': '', // optional, space-separated list of scopes, If not included or empty, defaults to `profile` and `email`.
        'webClientId': '1021194051942-l3a9pra25mto4dd6lpjaos9p7i3t9dj1.apps.googleusercontent.com', // optional clientId of your Web application from Credentials settings of your project - On Android, this MUST be included to get an idToken. On iOS, it is not required.
        'offline': true // Optional, but requires the webClientId - if set to true the plugin will also return a serverAuthCode, which can be used to grant offline access to a non-Google server
    })
    .then(user =>{


        this.nativeStorage.setItem('google_user', {
            name: user.displayName,
            email: user.email,
            picture: user.imageUrl
        })
        .then(() =>{
            this.router.navigateByUrl("/tutorial");
        }, error =>{
            this.router.navigateByUrl("/tutorial");
        })

    }, err =>{
        this.router.navigateByUrl("/tutorial");

    });


}

doGoogleLogout(){
    this.googlePlus.logout()
    .then(res =>{
        //user logged out so we will remove him from the NativeStorage
        this.nativeStorage.remove('google_user');
        this.router.navigateByUrl("/home");
    }, err =>{
        console.log(err);
    })
}


}
Can be fix in some way?

Posts: 1

Participants: 1

Read full topic


Wiko Manufacturer Name

$
0
0

@EinfachHans wrote:

Heythere,

does anyone has Wiko Device and can say me what the Manufacturer Name of this is?

I need to know, because i want to show a specific section in App only to those Devices.

Posts: 1

Participants: 1

Read full topic

Branch Name not displayed when creating branch build

Ionic 3 Android 10 Filetransfer plugin error

$
0
0

@RakeshrajA wrote:

open failed: ENOENT (No such file or directory)"}
java.io.FileNotFoundException: /storage/emulated/0/KLearn/Videos/V_G_2_2019_12_04_639_0.mp4_tmp: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:496)
at java.io.FileOutputStream.(FileOutputStream.java:235)
at org.apache.cordova.CordovaResourceApi.openOutputStream(CordovaResourceApi.java:330)
at org.apache.cordova.CordovaResourceApi.openOutputStream(CordovaResourceApi.java:311)
at org.apache.cordova.filetransfer.FileTransfer$2.run(FileTransfer.java:811)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
at libcore.io.Linux.open(Native Method)
at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252)
at libcore.io.ForwardingOs.open(ForwardingOs.java:167)

This error only on android 10 mobiles due to scoped storage I tried updating plugin but still error is there. How to resolve this issue.

Posts: 1

Participants: 1

Read full topic

Looking for a collaborator, willing to learn easier alongside someone

$
0
0

@Divergent wrote:

Hey guys, I will keep this short, who is interested please contact me further - Discord: Divergent#9094 - Email: 2017.andrei.d@gmail.com

I am working for a transportation company in Germany, as Driver, I love driving. The company is not big, but it needs an application for data tracking such as workers, fleet, jobs, tours etc. This app should work on phones, android, so the drivers can use it to accept new jobs or track their own route, when arriving at a destination, next etc…

The management should be able to use the application on a computer for management things such as tracking workers, looking where they are positioned on the map using google maps, when they are on duty and driving. Look up worker history in the company, records, hours, tours etc. Add new jobs for drivers to accept, do reports at the end of the month with how many hours each driver worked and payment per hour and export to excel for accounting office.

This is a rough description of the app but for the job I’ve chosen to do it as a Progressive Web App so it works on phones and computers at same time with same code, faster to finish than a standalone application.

I’ve been working in past with websites using PHP Laravel, Python Django and few other, but this is my first Progressive Web App and I am looking for a buddy or more who is also willing to learn and want to code this with me together. It’s fun to learn in a group than alone. There is no payment from this project, even not for me, I don’t get anything from the company, I want to do this project to learn, add it to my showcase and that’s all.

So this is pointed at those who want to learn together, I don’t expect any experienced to contact me since it’s not paid.

Posts: 4

Participants: 2

Read full topic

Ionic 4 Siri plugin remove method

$
0
0

@deeparaj wrote:

I’m using Siri shortcuts plugins cordova-plugin-siri-shortcuts and @ionic-native/siri-shortcuts. The following methods - donate, present and getActivatedShortcuts are working as expected. But these methods remove and removeAll are not working as expected. Invoking them is not removing the siri shortcuts. I made sure I’m using the right persistentIdentifier to remove. Also when it is invoked, it goes to the success method and no error thrown in the process. Is there any other factor I could be missing?

Posts: 2

Participants: 2

Read full topic

Ionic 4 Tabs TypeError: Cannot read property 'querySelectorAll' of null at getBackButton

$
0
0

@magic-77 wrote:

I’m getting this Error when using Child Routes and Tabs.

TypeError: Cannot read property 'querySelectorAll' of null at getBackButton

starting from here will open the first child route to another info page
detail.page.html

<ion-item button lines="none" [routerLink]="['details']">More</ion-item>

detail-routing.module.ts

const routes: Routes = [
    {
        path: '',
        component:DetailPage,
        children: [
            {
                path: '',
                redirectTo: 'details',
                component: DetailInfosPage
            }
        ]
    }
];

detail-infos.page.html

<ion-header>
    <ion-toolbar>
        <ion-buttons slot="start">
            <ion-back-button color="secondary"></ion-back-button>
        </ion-buttons>
        <ion-title>Extra Infos</ion-title>
    </ion-toolbar>
</ion-header>
<ion-content>
    <ion-tabs>
        <ion-tab-bar slot="top">
            <ion-tab-button tab="tab1">
                <ion-label>Infos</ion-label>
            </ion-tab-button>

            <ion-tab-button tab="tab2">
                <ion-label>Infos 2</ion-label>
                <ion-badge>6</ion-badge>
            </ion-tab-button>
        </ion-tab-bar>
    </ion-tabs>
</ion-content>

detail-infos-routing.module.ts

const routes: Routes = [
    {
        path: 'details',
        component: DetailInfosPage,
        children: [
            {
                path: 'tab1',
                children: [
                    {
                        path: '',
                        loadChildren: () => import('../tab1/tab1.module').then(m => m.Tab1PageModule)
                    }
                ]
            },
            {
                path: 'tab2',
                children: [
                    {
                        path: '',
                        loadChildren: () => import('../tab2/tab2.module').then(m => m.Tab2PageModule)
                    }
                ]
            },
            {
                path: '',
                redirectTo: 'details/tab1',
                pathMatch: 'full'
            }
        ]
    }
];

After clicking

<ion-item button lines="none" [routerLink]="['details']">More</ion-item>

the Error is thrown, but child page with Tabs is loaded but none of the Tabs is active

So what do i’m missing here?

Posts: 1

Participants: 1

Read full topic

Apple will stop accept submission of apps that use UIWebView APIs starting from Dec 2020

$
0
0

@seeyoucloud wrote:

Today, I submitted an Ionic 4 app to Apple.
It has been accepted, but I received this warning.
I’m wondering seriously how we will be able to build and submit Ionic apps to Apple from December 2020…

ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs starting from December 2020 . See https://developer.apple.com/documentation/uikit/uiwebview for more information.

Posts: 2

Participants: 2

Read full topic


Download File to Device by xmlhttprequest

$
0
0

@ebeliejinfren wrote:

Hello
i want use xmlhhtprequest for download file from url to android/ios device
best discussion that i found is here

i use 2 sample code that users offered it but they not working (there isn’t any file in files directory of app)
i test them in simulator (android 10) and real device (android 8)

code 1 :

downloadImage(pictureUrl) {
    //new request
    const req = new HttpRequest('GET', pictureUrl, {
      reportProgress: true,
      responseType: "blob"//blob type pls
    });
    //all possible events
    this.http.request(req).subscribe((event: HttpEvent<any>) => {
      switch (event.type) {
        case HttpEventType.Sent:
          console.log('Request sent!');
          break;
        case HttpEventType.ResponseHeader:
          console.log('Response header received!');
          break;
        case HttpEventType.DownloadProgress:
          //i use a gloal progress variable to save progress in percent
          this.progress = Math.trunc(event.loaded / event.total * 100);
          break;
        case HttpEventType.Response:
          //do whatever you have to do with the file using event.body
          console.log('😺 Done!', event.body);
          //i'm gonna write the file in my case
          let result = this.file.writeFile(this.file.dataDirectory, "mymp3.jpg", event.body, { replace: true }).then((file) => {
            console.log(result);

          }).catch(
            (err) => {
              //in case of file.writefile fail
            });
      }
    });
  }

log in simulator :
1

code 2 :

newDownload(url) {
    this.http.get(url, { responseType: 'blob' })
      .subscribe((imageBlob: Blob) => {
        // imageBlob is the binary data of the the image
        // From here you can manipulate it and store it where you want
        // For example, to store it in your app dir
        // The replace true is optional but is just in case you want to overwrite it
        let result = this.file.writeFile(this.file.dataDirectory, "my_downloaded_image.jpg", imageBlob, { replace: true });
        console.log(result);

      });
  }

log in simulator :
2


Ionic CLI : 6.1.0
Ionic Framework : @ionic/angular 5.0.1
@angular-devkit/build-angular : 0.803.24
@angular-devkit/schematics : 8.1.3
@angular/cli : 8.1.3

any body test this method on ionic 5 ?
Thanks :pray:

Posts: 1

Participants: 1

Read full topic

Problema APK Ionic

Geolocation failed on Android

$
0
0

@gsoulie wrote:

Hi everyone,

I’m trying to use geolocation on Android (according to official documentation : geolocation doc), and it works fine on web browser but it always throws the following error on Android device :

D/Capacitor: Sending plugin error: {"save":false,"callbackId":"110022566","pluginId":"Geolocation","methodName":"getCurrentPosition","success":false,"error":{"message":"location unavailable"}}

So if someone have an idea…

Posts: 1

Participants: 1

Read full topic

How is the hashkey packed in the .apk file on build? Is it configurable?

$
0
0

@DMoney wrote:

I finally solved a problem I had been having for over a month with the haskey for Android. I created an Ionic 4 app and neither facebook nor google authentication was working. I figured it was a problem with the hashkey…the hashkey I was generating was different than what was packaged in my .apk file. My question is, how does the .apk file determine from where to pull in the hashkey that it will use for facebook and google authentication. the hashkey I was generating was in users/.android/ on my MAC. My .apk obviously wasn’t pulling the hashkey from that directory. Does anyone know how to configure from where the hashkey is received and packaged in the .apk?

Posts: 1

Participants: 1

Read full topic

Angular Library with Ionic Components: NullInjectorError: No provider for ChangeDetectorRef!

$
0
0

@cclausen wrote:

I’ve setup an angular library project and trying to include some components in it that have ionic components in them.

Everything works fine, until I try to use an Ionic component in them. This is with Ionic 5.

The problematic component:

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'pct-ng-usersystem',
  template: `
    <p>
      ng-usersystem works!!!???
    </p>
    <ion-button>BTT</ion-button>
  `,
  styles: []
})
export class NgUsersystemComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}
 

Notice how it tries to use an ion-button.

The module exported by the library:

@NgModule({
  declarations: [NgUsersystemComponent],
  imports: [
    CommonModule,
    IonicModule
  ],
  exports: [NgUsersystemComponent]
})
export class NgUsersystemModule {
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: NgUsersystemModule,
      providers: [
        NgUsersystemService
      ]
    }
  }
}

As you can see I am importing IonicModule here and I am tried to fix the problem by importing Angulars CommonModule.
However when I tried to use this Component in an Ionic-Project I get an error:
NullInjectorError: StaticInjectorError(AppModule)[IonButton -> ChangeDetectorRef].

I don’t understand what I am supposed to do, google can’t even find who is normally supposed to provide the ChangeDetectorRef, it seems normally that just falls from the sky and for some reason now it isn’t.

Posts: 1

Participants: 1

Read full topic

Viewing all 71531 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>