Получить контакты с iphone с помощью Sencha Touch 2.4.1
Я пытаюсь получить контакты из iphone4s (ios 8.1.2), используя следующий фрагмент кода.
if (Ext.os.deviceType == 'Phone'){
var contactsConfig = {
success: function( contacts){
Ext.Msg.alert('Contacts?', contacts.length, Ext.emptyFn);
},
failure: function(context){
Ext.Msg.alert('Failure', 'It did not work.', Ext.emptyFn);
},
scope: this,
includeImages: false
};
Ext.device.Contacts.getContacts(contactsConfig);
}
Мой телефонный разрыв config.xml имеет разрешение на чтение контактов
<feature name="Contacts">
<param name="ios-package" value="CDVContacts" />
</feature>
Но я всегда получаю контакты, жестко запрограммированные в Ext.device.contacts.Abstract
Кто-нибудь смог получить контакты работающие на sencha touch 2.4.x? Или даже старые версии?
Любая помощь приветствуется.
1 ответ
Я смог решить проблему после многих взломов.
Шаг 1: Phonegap может читать контакты iOS.
Шаг 2: Вызов Ext.device.contacts.getContacts(). Документация Sencha Touch 2.4 неверна.
Шаг 3: Передача правильного параметра в функции навигатора. Также не работает Ext.browser.is.Cordova или.Sencha. Так что замени их.
Шаг 4: Cordova.js необходим для работы функций навигатора.
Убедитесь, что в проекте phonegap файл config.xml в разных местах (например, /www, //) содержит следующее
<feature name="Contacts"> <param name="ios-package" value="CDVContacts" />
Звоните получить контакты () правильный путь
var opts = new ContactFindOptions();
opts.filter = "";
opts.multiple = true;
var contactsConfig = {
options: opts,
fields: ["name", "phoneNumbers"],
success: function(contacts) {
Ext.Msg.alert('Simple contacts', contacts.length, Ext.emptyFn);
},
failure: function(context) {
Ext.Msg.alert('Failure', 'It did not work.', Ext.emptyFn);
},
scope: this,
includeImages: false
};
Ext.device.Contacts.getContacts(contactsConfig);
- Внутри вашего проекта sencha перейдите в touch/src/device и измените Contacts.js и contacts/Cordova.js соответственно
Ext.define('Ext.device.Contacts', {
singleton: true,
requires: [
'Ext.device.Communicator',
'Ext.device.contacts.Sencha',
'Ext.device.contacts.Cordova'
],
constructor: function() {
return Ext.create('Ext.device.contacts.Cordova');
}
});
Ext.define('Ext.device.contacts.Cordova', {
alternateClassName: 'Ext.device.contacts.PhoneGap',
extend: 'Ext.device.contacts.Abstract',
getContacts: function(config) {
if (!config) {
Ext.Logger.warn('Ext.device.Contacts#getContacts: You must specify a `config` object.');
return false;
}
if (!config.success) {
Ext.Logger.warn('Ext.device.Contacts#getContacts: You must specify a `success` method.');
return false;
}
if (!config.fields) {
config.fields = ["*"];
}
if (!Ext.isArray(config.fields)) {
config.fields = [config.fields];
}
if (Ext.isEmpty(config.multiple)) {
config.multiple = true;
}
navigator.contacts.find(config.fields, config.success, config.failure, config.options);
}
});
- Включить cordova.js в index.html
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>