cordova-plugin-background-geolocation icon indicating copy to clipboard operation
cordova-plugin-background-geolocation copied to clipboard

mauron85 / cordova-plugin-background-geolocation Error in Ionic 6 Android

Open ivinantony opened this issue 2 years ago • 17 comments

This plugin gives error in ionic 6 android due to android permission

ionic info

Ionic:

Ionic CLI : 6.19.0 (/usr/local/lib/node_modules/@ionic/cli) Ionic Framework : @ionic/angular 6.0.12 @angular-devkit/build-angular : 13.2.6 @angular-devkit/schematics : 13.2.6 @angular/cli : 13.2.6 @ionic/angular-toolkit : 6.1.0

Cordova:

Cordova CLI : 11.0.0 Cordova Platforms : android 10.1.1 Cordova Plugins : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 5.0.0, (and 3 other plugins)

Utility:

cordova-res : 0.15.4 native-run : 1.5.0

System:

ios-deploy : 1.11.4 NodeJS : v16.14.0 (/usr/local/bin/node) npm : 8.1.0 OS : macOS Monterey Xcode : Xcode 13.3 Build version 13E113

  • Plugin version: Latest version
  • Platform: Android
  • OS version:
  • Device manufacturer and model:
  • Running in Simulator:
  • Cordova version (cordova -v): 11.0.0
  • Cordova platform version (cordova platform ls):
  • Plugin configuration options:
  • Link to your project:

Context

In Ios its working fine but in android while creating build it shows error of android permission.

Expected Behavior

Its should not have any issue while android build

Actual Behavior

Task :app:mergeDebugResources FAILED

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:mergeDebugResources'.

Could not resolve all files for configuration ':app:debugRuntimeClasspath'. Could not find com.intentfilter:android-permissions:0.1.7. Searched in the following locations: - https://dl.google.com/dl/android/maven2/com/intentfilter/android-permissions/0.1.7/android-permissions-0.1.7.pom - https://repo.maven.apache.org/maven2/com/intentfilter/android-permissions/0.1.7/android-permissions-0.1.7.pom Required by: project :app

  • Try:

Possible Fix

   - https://dl.google.com/dl/android/maven2/com/intentfilter/android-permissions/0.1.7/android-permissions-0.1.7.pom
   - https://repo.maven.apache.org/maven2/com/intentfilter/android-permissions/0.1.7/android-permissions-0.1.7.pom
   - no files found here.

Steps to Reproduce

1.create an ionic 6 app 2. installed this plugin 3.create android build Screenshot 2022-03-16 at 11 14 24 PM

Context

Debug logs

ivinantony avatar Mar 17 '22 06:03 ivinantony

Use this plugin https://github.com/HaylLtd/cordova-background-geolocation-plugin/

josuelmm avatar Mar 26 '22 01:03 josuelmm

@josuelmm thank you it works but it doesnt give data when app is in background

ivinantony avatar Mar 27 '22 06:03 ivinantony

Use this plugin https://github.com/HaylLtd/cordova-background-geolocation-plugin/

@mauron85 @josuelmm i used this plugin but when we allow the permission and after 2,3 second app is crashing in android. do you have any idea? and it doesn't work in background in android after 5 or 6 minutes too

ivinantony avatar Mar 27 '22 07:03 ivinantony

I have this configuration

this.configBackground = {
      stopOnTerminate:false,
      locationProvider:2,
      desiredAccuracy: 0,
      stationaryRadius: 0,
      distanceFilter: 0,
      debug: false,
      interval:3000,
      fastestInterval:2000,
      notificationsEnabled:true,
      startForeground:false,
      notificationTitle:' ',
      notificationText:'Navegación activada',
      notificationIconColor: '#c50707',
      notificationIconLarge:'ic_tracking',
      notificationIconSmall:'ic_tracking',
    };    

Working excelent in background with the application minimized...

josuelmm avatar Mar 27 '22 11:03 josuelmm

@josuelmm thanks. but for me in ios app is getting crashing while allowing the permissio

https://user-images.githubusercontent.com/66516836/160285564-ae165d20-4d13-4ada-a6a9-89fa3af8beea.mp4

n

ivinantony avatar Mar 27 '22 14:03 ivinantony

Request permission of ACTIVITY_RECOGNITION before permission location Use the plugin https://ionicframework.com/docs/native/android-permissions

josuelmm avatar Mar 27 '22 14:03 josuelmm

thank you so much @josuelmm i will try this.

ivinantony avatar Mar 27 '22 14:03 ivinantony

this.androidPermissions.requestPermission('android.permission.ACTIVITY_RECOGNITION') .then(result => { if (!result.hasPermission){ this.permissionActivity = false; }else{ this.permissionActivity = true; } }) .catch(err=>{ this.permissionActivity = false; });

josuelmm avatar Mar 27 '22 21:03 josuelmm

@josuelmm does it works for you in ios too? for me it works for a 5 minutes in ios and android almost 1 hour. after that this plugin also goes sleep.can i see the way you integrated?

ivinantony avatar Mar 28 '22 17:03 ivinantony

You must request permission to run in the background, and notify the client that they must remove the battery saving app.

You do the battery permission with powerOptimization import { PowerOptimization } from '@awesome-cordova-plugins/power-optimization/ngx';

async requestPermissionLocationForever(){ this.androidPermissions.requestPermission('android.permission.ACCESS_BACKGROUND_LOCATION') .then(result => { if (!result.hasPermission){ this.permissionActivityForever = false; }else{ this.permissionActivityForever = true; } }) .catch(err=>{ this.permissionActivityForever = false; }); }

`async RequestOptimizations(){ this.powerOptimization.RequestOptimizations().then(status =>{ this.IsIgnoringBatteryOptimizations(); this.IsIgnoringDataSaver(); this.HaveProtectedAppsCheck(); }) .catch(error => { this.permissionBattery = false; }); }

async IsIgnoringDataSaver(show = false){ this.powerOptimization.IsIgnoringDataSaver().then((status) => { this.permissionBackground = status; if (status == false && show == true){ this.powerOptimization.RequestDataSaverMenu().then((result) => {}, (err) => {}); } }, (err) => { this.permissionBackground = false; }); }

async IsIgnoringBatteryOptimizations(show = false){ this.powerOptimization.IsIgnoringBatteryOptimizations().then(status =>{ if (status == false && show == true){ this.showAlertBattery(); }

  if (status == false){
    setTimeout(()=>{
      this.IsIgnoringBatteryOptimizations();
      this.IsIgnoringDataSaver();
      this.HaveProtectedAppsCheck();
    },10000);
  }
  this.permissionBattery = status;
})
.catch(error => {
  this.permissionBattery = false;
});

}

async HaveProtectedAppsCheck(){ this.powerOptimization.HaveProtectedAppsCheck().then((result) => { this.permissionBatteryProtect = result; }, (err) => { this.permissionBatteryProtect = false; }); }`

josuelmm avatar Mar 28 '22 17:03 josuelmm

@josuelmm thank you so much for your help this all helped me a lot. Thanks for your updates.

ivinantony avatar Mar 28 '22 18:03 ivinantony

@josuelmm is there any directly to the location permission instead of opening the all permissions like in this pic? image

ivinantony avatar May 18 '22 15:05 ivinantony

@josuelmm but that plugin not working in Samsung can you show me an example how you are asking permission and all

ivinantony avatar Jul 07 '22 18:07 ivinantony

Use this plugin https://github.com/HaylLtd/cordova-background-geolocation-plugin/

So, is this plugin "@mauron85/cordova-plugin-background-geolocation" to be ignored now and this one to be used instead "https://github.com/HaylLtd/cordova-background-geolocation-plugin/" ? I'm asking because Ionic page points to this plugin.

steven-fernandez avatar Aug 05 '22 19:08 steven-fernandez

Si correcto @steven-fernandez

josuelmm avatar Aug 05 '22 20:08 josuelmm

Si correcto @steven-fernandez

Gracias :)

steven-fernandez avatar Aug 06 '22 07:08 steven-fernandez

Use this plugin https://github.com/HaylLtd/cordova-background-geolocation-plugin/

hi, I try to compile for andorid with that plugin but I get an error too, any tips? I already try to removed/add android platform.

error: cannot access zzbfm
        confidence = activity.getConfidence();
                             ^
  class file for com.google.android.gms.internal.zzbfm not found

image

seltix5 avatar Dec 10 '22 02:12 seltix5