PhoneGap / Cordova - Не появляется запрос на разрешение камеры.

Я использую эмулятор PhoneGap Desktop для тестирования своего приложения, которое просто делает снимок с помощью камеры устройства. Все хорошо работает в приложении PhoneGap на Android и iOS. Я получаю запросы, прежде чем сделать снимок, с просьбой разрешить PhoneGap доступ к камере. Тогда все будущие запросы камеры будут работать нормально. Как я и ожидал.

Однако, когда я создаю собственные приложения и запускаю их на устройствах iOS / Android, они больше не запрашивают у меня разрешение на использование камеры, а в iOS происходит сбой, когда я пытаюсь открыть камеру. На Android он просто ничего не делает, когда я включаю камеру.

Я изо всех сил пытаюсь понять, почему он работает с использованием приложения PhoneGap, но не работает, когда я запускаю его как собственное приложение? Я что-то упускаю?

Я создаю структуру приложения, добавляю платформы / плагины и т. Д. С помощью Cordova CLI на моем сервере Ubuntu. Я использую серверы сборки Adobe PhoneGap (v7.0.1) для компиляции собственных приложений. Я использовал только рабочий стол PhoneGap для проверки этой проблемы.

Версия ОС устройства iOS = v11.0.3 Версия ОС устройства Android = 7.0

My config.xml file:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.mycameraapp" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>My Camera App</name>
    <description>
Test App
    </description>
    <author email="[email protected]" href="http://www.mycameraapp.com">
        My Camera App
    </author>
    <content src="index.html" />
    <plugin name="cordova-plugin-whitelist" spec="1" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
    <engine name="ios" spec="~4.5.3" />
    <engine name="android" spec="~6.3.0" />
    <plugin name="cordova-plugin-camera" spec="^3.0.0">
        <variable name="CAMERA_USAGE_DESCRIPTION" value="To take pictures from within the App" />
        <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="To take pictures from within the App" />
    </plugin>
</widget>

Код JavaScript, запускающий камеру:

function upload_case_image(mode) {
	
	
	openCamera(mode);
	
}



function setOptions(srcType) {
	var options = {
		// Some common settings are 20, 50, and 100
		quality: localStorage.getItem('image_quality'), // Image quality is defined in the database
		destinationType: Camera.DestinationType.DATA_URL,
		// In this app, dynamically set the picture source, Camera or photo gallery
		sourceType: srcType,
		encodingType: Camera.EncodingType.JPEG,
		mediaType: Camera.MediaType.PICTURE,
		allowEdit: false,
		correctOrientation: true  //Corrects Android orientation quirks
	}
	return options;
}


function openCamera(mode) {

	var srcType = Camera.PictureSourceType.CAMERA;
	var options = setOptions(srcType);
	

	navigator.camera.getPicture(function cameraSuccess(imageUri) {

		upload_image(mode, imageUri);

	}, function cameraError(error) {
		console.debug("Unable to obtain picture: " + error, "app");

	}, options);
}

Мой index.html находится в обычном месте в www и ссылается на файл corodva.js:

				
<!-- Cordova -->
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>


person Jamie Cole    schedule 11.11.2017    source источник


Ответы (1)


Похоже, я понял, где ошибся.

Я использовал Cordova, а не PhoneGap CLI. Я установил Node.js на свой компьютер, затем установил PhoneGap (npm install -g phonegap @ latest).

Затем, используя командную строку, я создал приложение с помощью PhoneGap в Windows вместо использования Cordova в Ubunutu.

Когда я загрузил его на серверы сборки Adobe для создания приложения PhoneGap, похоже, теперь он работает.

Имеет смысл, почему я столкнулся с некоторыми трудностями.

person Jamie Cole    schedule 11.11.2017