Je souhaite utiliser le PositionService
de Gluon Mobile sur iOS. J'ai écrit un petit exemple d'application qui fonctionne sur le bureau, fournissant (comme prévu) de faux changements d'emplacement, et sur Android. Sur le simulateur iOS, cependant, l'écouteur n'est pas appelé. Voici la partie pertinente du code:Comment utiliser PositionService dans Gluon Mobile sur iOS?
public class BasicView extends View {
private static final Logger LOGGER = Logger.getLogger(BasicView.class.getName());
final Label label;
public BasicView(String name) {
super(name);
label = new Label();
VBox controls = new VBox(15.0, label);
controls.setAlignment(Pos.CENTER);
setCenter(controls);
// get current position
Platform p = PlatformFactory.getPlatform();
PositionService ps = p.getPositionService();
outputPos(ps.getPosition());
ps.positionProperty().addListener((obs, oldPos, newPos) -> {
LOGGER.log(Level.INFO, "\nobs: {0}\noldPos: {1}\nnewPos: {2}",
new Object[]{obs, oldPos, newPos});
outputPos(newPos);
});
}
private void outputPos(Position p) {
if (p != null) {
label.setText(String.format("We are currently here: %f %f",
p.getLatitude(),
p.getLongitude()));
}
}
@Override
protected void updateAppBar(AppBar appBar) {
appBar.setNavIcon(MaterialDesignIcon.MENU.button(e -> System.out.println("Menu")));
appBar.setTitleText("Basic View");
appBar.getActionItems().add(MaterialDesignIcon.SEARCH.button(e -> System.out.println("Search")));
}
}
J'ai ajouté libCharm.a, mais pour autant que je peux dire qu'il ne devrait pas être nécessaire ici.
J'ai également trouvé des indications sur la mise à jour de info.plist comme suit, mais avec ou sans l'écouteur n'est pas appelé.
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
<string>location-services</string>
</array>
...
<key>NSLocationWhenInUseUsageDescription</key>
<string>Location is required to find out where you are</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Location is required to find out where you are</string>
La seule sortie concernant l'emplacement que je vois est ceci:
Aug 27, 2016 1:37:31 PM com.gluonhq.charm.down.ios.IOSPositionService <init>
INFO: Location Manager configured with desiredAccuracy 10.00 and distanceFilter 100.00
Aug 27, 2016 1:37:31 PM com.gluonhq.charm.down.ios.IOSPositionService <init>
INFO: Telling LocationManager to start updating location.
Je suppose que je suis manque quelque chose ici ... Comme toujours, toute aide est grandement appréciée.
EDIT: Désolé, oublièrent build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.0.8'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
maven {
url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
}
}
mainClassName = 'com.thomaskuenneth.gluon.positionservicedemo.PositionServiceDemo'
dependencies {
compile 'com.gluonhq:charm:3.0.0'
androidRuntime 'com.gluonhq:charm-android:3.0.0'
iosRuntime 'com.gluonhq:charm-ios:3.0.0'
desktopRuntime 'com.gluonhq:charm-desktop:3.0.0'
}
jfxmobile {
android {
manifest = 'src/android/AndroidManifest.xml'
compileSdkVersion = 23
}
ios {
infoPList = file('src/ios/Default-Info.plist')
forceLinkClasses = [
'com.gluonhq.**.*',
'io.datafx.**.*',
'javax.annotations.**.*',
'javax.inject.**.*',
'javax.json.**.*',
'org.glassfish.json.**.*'
]
}
}
Nous venons de publier Charm Down 3.0.0, avec une refonte complète de la bibliothèque. Jetez un coup d'œil aux échantillons Gluon mis à jour, qui utilisent la nouvelle version 1.1.0 du plugin jfxmobile. Les plugins IDE sont également mis à jour pour utiliser ces versions. Essayez-le et faites-moi savoir si cela résout votre problème. –
José, désolé d'avoir pris le temps de répondre. J'ai mis à niveau vers Gluon Mobile 4, c'est-à-dire le plugin et le nouveau Charm Down. Une fois que j'ai mis à jour mon code (en utilisant les Services) et appliqué les changements que j'ai mentionnés dans ma réponse, j'ai commencé à voir les changements de position dans le simulateur d'iPad. Ainsi, la mise à niveau vers Gluon Mobile 4 a résolu mon problème. ;-) – Thomas
Importez-vous 'com.gluonhq.charm.down.plugins. *' (Contenant PositionServices)? Je compile 'com.gluonhq: charm: 4.3.7' dans ma' build.Gradle' fichier - mais je ne peux pas/ne sais pas comment accéder aux derniers services - seulement voir un nombre limité d'entre eux. Ils ne sont pas possibles avec 'import com. *. * ...' (etc). – Lealo