ionic $cordovaGeolocation always requests permission for location access - ios

I am running ionic and the ngCordova geolocation wrapper.
Here is a snippet from a controller using the plugin:
$ionicPlatform.ready(function () {
$cordovaGeolocation
.getCurrentPosition({timeout: 10000, enableHighAccuracy: false})
.then(permissionGranted)
.catch(permissionNotGranted)
.then(loadGmap)
.catch(handleGmapLoadError);
});
I run my app using:
ionic run ios --device
As the app comes up, I am asked permission to access the location of the phone as expected. I acknowledge it and my controller loads my location in google maps. I see the permission set in my ios settings reflect the setting made. when I open the app the second time, it asks again. This was unexpected behavior.
Most apps don't ask again and again. Has any one else seen this behavior and know what I should do?

you can try to add the permission in the config file (app/platforms/android/res/xml/config.xml)
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.GeoBroker" />
</feature>
and in the(app/platforms/android/AndroidManifest.xml)
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

Related

How to integrate Zoom Meeting SDK in MAUI Android and Windows

I am trying to integrate Zoom SDK in MAUI for both Android and Windows
I am using Xamarin tutorials to integrate for Android as I didn't found any code reference for MAUI.
I tried but it is not working and my App is crashing after Join Metting and giving the error:
[ame.zoomsdkpro] java_vm_ext.cc:579] JNI DETECTED ERROR IN APPLICATION: JNI CallIntMethodV called with pending exception java.lang.SecurityException: getCallState: Neither user 10154 nor current process has android.permission.READ_PHONE_STATE.
My Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:allowBackup="true" android:icon="#mipmap/appicon" android:roundIcon="#mipmap/appicon_round" android:supportsRtl="true"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.Manifest.permission.READ_PHONE_STATE" />
</manifest>
The android.permission.READ_PHONE_STATE is a dangerous permission. You need to not only declare it in the Manifest file, but also request it in the run time.
So you can use the following code to request the permission on the android:
# if ANDROID
var status = await Permissions.RequestAsync<Permissions.Phone>();
# endif
For more information,you can check the official document about the permissions.

get a blank white screen with only app.vue items but not other component

i have an app build on vuejs and build with cordova. after i cordova build ios it successfully build the app but when i cordova emulate ios it is only showing app.vue components but not other components. the app.vue content is nav.vue. it only show the nav bar and make the other white screen. can someone please help me to solve this problem.
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<splash src="res/screen/ios/icon.png" />
</platform>
<access origin="about:*" />
<allow-navigation href="about:" />
<access origin="tel:" launch-external="yes" />
<access origin="mailto:" launch-external="yes" />
<preference name="scheme" value="app" />
this is my config.xml
Please try using the Safari Developer Tools on Mac to connect to your test device and check out the JavaScript console. Often times you will see the error there. On Android you can do this with Chrome.
I am answering my question. i solve this problem by just change the vue route history mode in to hash mode
like shown below
const router = new VueRouter({
mode: "hash",
base: process.env.BASE_URL,
routes,
});
and add the below code in vue.config.js file
devServer:{
https:false
}

Nativescript webview set permission for mediaDevices.getUserMedia

I am using Nativescript webview to run my web-app. But have problem when trying to do:
navigator.mediaDevices.getUserMedia({
audio: true,
video: false
}).then(function (stream) {
Anybody know how to set permission for WEBRTC related functions?
Thanks a lot!
Note:
it's for android and I have search for few hours but it seems no complete explanation about requesting permission, unlike for android studio (like this one: https://developer.android.com/reference/android/webkit/WebSettings).
the web-app is running well under google chrome.
Finally it works, but I am using standard java (android studio without the IDE), the most important parts are:
use webchromeclient.
set permission: android.webkit.resource.AUDIO_CAPTURE.
manifest:
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.MICROPHONE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.audio.low_latency" />
<uses-feature android:name="android.hardware.audio.pro" />
<uses-feature android:name="android.hardware.microphone" android:required="true"/>

PhoneGap Build In App Browser not being loaded

I have a phonegap application that is working perfectly through the local server on the phonegap development iOS app.
Specifically, a call to
var ref = cordova.InAppBrowser.open('https://subdomain.domain.com', '_blank', 'location=no');
works fine in the dev app, however when pushed to phonegap build and accessed via the app installed via testflight, using Hydration to update easily, the button is entirely unresponsive.
I have a feeling that none of the plugins are being loaded, as the status bar is malfunctioning as well.
Here is the relevant part of the config.xml file:
<plugin name="cordova-plugin-inappbrowser" spec="~1.7.0" />
<plugin name="cordova-plugin-statusbar" />
<plugin name="cordova-plugin-whitelist" spec="1.3.1" />
I know the insecurity of this, however, changing to the url i am trying to access does not change anything:
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<allow-intent href="*" />
</platform>
The button in question:
<span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> OR SIGN UP
The javascript relating to this button:
document.addEventListener("deviceready", function(){
deviceReadyDependantFunctions();
initializeApplication();
});
function deviceReadyDependantFunctions(){
alert('initialised!');
$('#signUpButton').unbind().click(function(){
console.log('here');
var ref = cordova.InAppBrowser.open('https://subdomain.domain.com?some=variable', '_blank', 'location=no');
ref.addEventListener('loadstart', function(event) { alert(event.url); });
console.log(ref);
});
}
Obviously, there's a bunch of debugging in there....
The "initialised" alert fires in all environments.
The event.url alert fires in the dev app but not in the test flight, hydrated application.
I have been trying everything I can find to rectify this... The only solution I have found is to use a simple href="theUrl.com" and let the system browser load it. Which is not a solution at all... I need to load the url in the app. It's a sign up page and is essential that it can be accessed from the app.
Things I have tried:
Every permeation of whitelisting, although there are varying docs saying that in app browser is/isn't affected by the whitelist plugin.
Using a different version of phonegap (<preference name="phonegap-version" value="cli-6.5.0" />) to no avail.
Checked that the plugins are present in the phonegap build "plugins" tab. They are.
Tried replacing the reference to cordova.js with phonegap.js. This didn't work at all.
The order of loading js files (the above call to inappbrowser is in a seperate js file). No difference.
What am I doing wrong?!
Or is there something weird with the TestFlight/Hydrated Application combination?
You can see the ridiculous commits I have made, as well as the full codebase here:
https://github.com/andycharrington/yfa/commits/master
Any advice would be massively appreciated.
Thank you.
Recompiling the unchanged code with Phone Gap Build this morning seemed to magically fix it. Don't you just love it when that happens? :)

background geolocation mauron85 app crashes after installing apk

I had the same issue referred on this link. So to resolve the issue i did what klaus-donnert did,and also went here to download the latest plugin.... below is my xml file:
<preference name="phonegap-version" value="cli-6.4.0" />
<plugin name="cordova-plugin-mauron85-background-geolocation" spec="^2.2.5">
<variable name="ALWAYS_USAGE_DESCRIPTION" value="This app requires background tracking enabled to calculate the distance between you and Ecocompub partners" />
</plugin>
Next step was to test the app on my android, so after uploading the zip on phonegap.build, i read the qr code as usual, and .... the app crashed! it opens for a few seconds, but then closes...if i simply don´t use the plugin, the app runs well...does anybody experienced this problem?, i´m completely stuck.
Regards
So to help others that might have the same situation, the problem is NOT with the background mauron85 plugin, it was with my phonegap-plugin-push which was outdated since i was using cli-6.4.0...so if you want to use both plugins, you have to have on your xml file the following:
for background geolocation mauron85 plugin:
<preference name="phonegap-version" value="cli-6.4.0" />
<plugin name="cordova-plugin-mauron85-background-geolocation" spec="^2.2.5">
<variable name="ALWAYS_USAGE_DESCRIPTION" value="set this value, otherwise apple will refuse your app" />
</plugin>
for push-plugin from here:
<plugin name="phonegap-plugin-push" spec="1.8.4" source="npm">
Regards.

Resources