[Cordova] Send Message


#1

Salut.

Je suis en train de réaliser mon application Cordova avec la librairie JS.

Il me manque plus que l’envoi de message à constellation.

Je sais que la Doc arrivera sur ce sujet, mais en attendant quelqu’un a réussi à envoyer un message depuis une page X avec le controller dans index.js ?


#2

Les docs sur Cordova, Ionic & Tizen sont les prochaines sur la liste !

Sinon, celles sur la lib JS et NG sont publiées depuis la semaine dernière.

Plus particulièrement :https://developer.myconstellation.io/client-api/javascript-api/consommer-constellation-api-javascript/#Envoyer_des_messages_et_invoquer_des_MessageCallbacks

Dis moi si tu trouves les réponses à tes questions,


#3

Oui par exemple dans ma page j’ai :

            $(document).on("click", ".song", function (event) {
                var song = $(this).attr("data-id");
                constellation.server.sendMessage({ Scope: 'Package', Args: ['Squeezebox'] }, 'SendToSqueezebox', ["Play_Title", song, "SdB"]);
            });

Mais ça ne marche pas. Il faut l’utiliser autrement ?


#4

Hello,

Perso je sélectionne directement l’element pour lui attacher l’event, type :

$("#myID").on("click",function() {		
   // TODO
});

Autrement si tu mets une trace de debug, est-ce que ton handler est bien exécuté? Est-ce que tu récupère bien ton “song” ?


#5

Oui l’événement se déclenche bien et j’ai bien la variable song.

J’ai utilisé $(document).on(“click”, “.song”, function (event) { car “.song” vient d’un élément chargé en ajax.

J’ai test ma fonction version angular sur mon site web normal et ça fonctionne bien.


#6

“SendToSqueezebox” est un MC avec 3 paramètres de type string ? C’est bien çà ?

Tu le vois bien dans le MC Explorer de la console ? L’invoke fonctionne bien ?


#7

Le premier paramètre est de type “Squeezebox.Remote.Enumerations.SqueezeboxCommand”, le reste string.

Depuis le MC explorer je peux lancer la commande, ça fonctionne bien.

Sur une page web basique avec angular ça fonctionne bien.

C’est vraiment depuis cordova qu’il se passe rien. Je sais pas trop comment debuguer depuis mon portable.


#8

Des idées depuis le temps ?

J’ai essayé de mettre un id dans ma page index.html puis de faire un click event dans index.js mais vu que tout est dans (function () { il trouve pas ma fonction.


#9

J’ai réussi en supprimant le premier function de index.js comme ça on peut accéder aux variables de connexion.


#10

Bonjour, j’ai le même soucis, j’ai un event handler sur un bouton pour envoyer une note PushBullet. La fonction se lance bien (le console.log s’execute bien) mais derrière je ne recoit pas la note. Si j’invoke le MC depuis le serveur Constellation tout fonctionne bien. J’ai essayer de placer l’event handler dans différents niveaux de la page mais je n’ai jamais rien.

$("#send").click(function() {
  console.log("Sent!");
  sent = constellation.server.sendMessage({ Scope: 'Package', Args: ['PushBullet'] }, 'PushNote', "Titre", "message");
});

#11

Finalement avec un petit appel ajax et l’api REST ça fonctionne!


#12

Alors petite update.
Comme précisé ici l’API JS n’a pas la même syntaxe en fonction des version que l’on utilise

// 1.8.1
constellation.server.sendMessage({ Scope: 'Package', Args: ['DemoPackage'] }, "UneMethodeSansParam", "{}");

// 1.8.2
constellation.server.sendMessage({ Scope: 'Package', Args: ['DemoPackage'] }, "UneMethodeSansParam")

Ce qui causait le problème donc, c’est que j’utilisais la syntaxe de la version 1.8.2 tout en ayant importé la version 1.8.1.
J’ai donc simplement changé le fichier de l’API dans mon projet Cordova et tout est rentré dans l’ordre