2016-04-21 1 views
1

Je crée une application cordova de mon html/js-code avec ce cordova-config:Cordova - Comment obtenir un titre de tuile sur Windows Mobile

<?xml version='1.0' encoding='utf-8'?> 
<widget id="myapp" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> 
    <name>My App</name> 
    <description> 
     A small demo app 
    </description> 
    <author email="[email protected]" href="http://anyth.ing"> 
     My App 
    </author> 
    <content src="index.html" /> 
    <plugin name="cordova-plugin-splashscreen" spec="3.2.0"/> 
    <access origin="*" /> 
    <preference name="Fullscreen" value="true"/> 
    <platform name="windows"> 
     <!-- splashs and icons --> 

    </platform> 
</widget> 

Mais quand je déploie l'application à mon Devide mobile (Windows 10 mobile) la vignette de l'écran de démarrage n'affiche pas de titre. L'application elle-même dans la liste des applications a un titre mais pas la tuile.

Comment puis-je obtenir un titre de tuile dans la mosaïque d'écran d'accueil?

Cordialement

Tenoda

Répondre

3

Pour autant que je peux voir, Cordova ne fournit pas de préférence pour ajouter le titre de tuiles de Windows. Vous supposeriez que Cordova prendrait juste le nom présent dans l'élément name dans le fichier config.xml et l'utiliserait pour les tuiles de l'écran d'accueil.

Pour obtenir un titre dans la mosaïque d'écran d'accueil, vous devez modifier le fichier package.windows10.appxmanifest situé dans le répertoire platform/windows.

Ajout, sous l'UAP: DefaultTile élément fait fonctionner pour moi:

<uap:ShowNameOnTiles> 
    <uap:ShowOn Tile="square310x310Logo" /> 
    <uap:ShowOn Tile="square150x150Logo" /> 
    <uap:ShowOn Tile="wide310x150Logo" /> 
</uap:DefaultTile> 

également: Ajouter le titre souhaité dans la ShortName attribut pour l'élément UAP: DefaultTile .

0

Ajout à la réponse de Evertson:

Pour éviter d'avoir à maintenir la plate-forme d'édition/fichiers Windows, vous pouvez copier package.windows10.appxmanifest à la résolution/dossier natif/Windows. Le code devrait ressembler à ceci:

<uap:DefaultTile ShortName="..." Square310x310Logo="..." etc.> 
    <uap:ShowNameOnTiles> 
     <uap:ShowOn Tile="square310x310Logo" /> 
     <uap:ShowOn Tile="square150x150Logo" /> 
     <uap:ShowOn Tile="wide310x150Logo" /> 
    </uap:ShowNameOnTiles> 
</uap:DefaultTile> 

Bien sûr, cela signifie que vous devez modifier le manifeste chaque fois que vous apportez des modifications de configuration. Il est intéressant de noter que l'ancien manifeste Windows 8.1 (package.windows.appxmanifest) et le manifeste Windows 8.1 (package.phone.appxmanifestfile) incluent déjà cette information par défaut. Aucune idée pourquoi il a été enlevé pour les fenêtres 10.

Modifier

Vous pouvez créer un crochet pour insérer le code XML de sorte que vous n'avez pas à vous soucier d'appliquer les modifications à config.xml:

Ajoutez ce qui suit: hooks/showNameOnTiles.js

module.exports = function (context) { 
    "use strict"; 
    var fs = require('fs'), 
     path = context.opts.projectRoot + '/platforms/windows/package.windows10.appxmanifest', 
     manifest = fs.readFileSync(path).toString(), 
     lines, i, lineNo; 
    if (!manifest.includes('uap:ShowNameOnTiles')) { 
     lines = manifest.split(/\r?\n/); 
     for (i = 0; i < lines.length; i++) { 
      if (lines[i].indexOf('uap:DefaultTile') !== -1) { 
       lineNo = i; 
       break; 
      } 
     } 
     if (lineNo) { 
      lines[lineNo] = lines[lineNo].replace('/>', '>').replace(' >', '>'); 
      lines.splice(lineNo + 1, 0, [ 
       '<uap:ShowNameOnTiles>', 
        '<uap:ShowOn Tile="square310x310Logo" />', 
        '<uap:ShowOn Tile="square150x150Logo" />', 
        '<uap:ShowOn Tile="wide310x150Logo" />', 
       '</uap:ShowNameOnTiles>' 
      ].join('\n')); 
      lines.splice(lineNo + 2, 0, '</uap:DefaultTile>'); 
      fs.writeFileSync(path, lines.join('\n')); 
     } 
    } 
}; 

En config.xml, ajouter:

<platform name="windows"> 
    <hook type="after_prepare" src="hooks/showNameOnTiles.js" /> 
</platform> 

Une façon plus simple

Il y a une façon plus simple de faire cela, mais je ne pouvais pas le faire fonctionner; vous pouvez créer votre propre plugin:

<?xml version="1.0" encoding="UTF-8"?> 
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
    id="com.blah.addtiletitleplugin" version="1.0.0"> 
    <name>Adds the title to windows 10 tiles</name> 
    <description>Adds the title to windows 10 tiles</description> 
    <platform name="windows"> 
    <config-file target="package.windows10.appxmanifest" parent="/Package/Applications/Application/uap:VisualElements/uap:DefaultTile/"> 
     <uap:ShowNameOnTiles> 
     <uap:ShowOn Tile="square310x310Logo" /> 
     <uap:ShowOn Tile="square150x150Logo" /> 
     <uap:ShowOn Tile="wide310x150Logo" /> 
     </uap:ShowNameOnTiles> 
    </config-file> 
    </platform> 
</plugin> 

Cependant, quand je tente d'ajouter le plug-in, visual studio refuse de l'analyser, même si je l'ai spécifié:

xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 

Si je supprime le UAP : parties, il analyse et ajoute mais, bien sûr, échoue sur la construction.

+1

J'ai rencontré le même problème d'analyse de Visual Studio avec l'approche du plug-in. J'ai réussi à le faire fonctionner en 1) en commentant le bloc '', 2) en installant le plugin, 3) sans commenter le bloc '', 4) enlever et réinstaller le plugin. L'astuce consistait à garder l'onglet Plugins/Custom affiché pendant tout le processus. J'ai également dû supprimer le dossier platform/windows et reconstruire l'application. –