Gboard贴图搜索不返回结果

问题描述:

通过应用程序索引我向GBoard添加了贴纸包,但GBoard搜索无法找到我的关键字贴纸。Gboard贴图搜索不返回结果

new Indexable.Builder("Sticker") 
    .setName("Bye") 
    .setImage("http://www.snoopysticker.com?id=1234") 
    .setUrl("http://sticker/canonical/image/bye") 
    .setDescription("A sticker for Bye") 
    .put("keywords", "bye", "snoopy", "see ya", "good bye") 
    .put("isPartOf", 
     new Indexable.Builder("StickerPack") 
      .setName("Snoopy Pack") 
      .build()) 
    .build())}; 
+0

我也有我的贴在gboard没有出现问题。我必须首先获得Gboard的最新测试版以获取贴纸功能。我的个人贴纸Allo即时出现。然后我用NBAmoji应用程序测试了贴纸功能,它的工作完美无瑕。但我仍然没有看到我的应用出现在那里的标签。我几乎完全遵循了示例代码,我没有得到任何错误。似乎一切正常,更新任务成功完成。示例代码:https://github.com/firebase/quickstart-android/tree/master/app-indexing – cybergen

+1

要获取Gboard中的贴纸,请长按表情符号按钮(逗号)。新的贴纸图标位于emoji图标和gif图标之间的最底部。按下它,你会看到一些贴纸(如果有的话)或提示从游戏商店下载一个sitcker应用程序。当心,也有一些蹩脚的... ;-) – cybergen

+1

但是,如果您希望其他人帮助您,您应该提供更多的“IndexingService”和“StickerProvider”代码,并详细描述您的问题。日志说什么?任何错误?更新任务如何运作? – cybergen

的问题是在代码中的另一部分,因为你上面贴东西在下面的例子改编自Google's sample project for stickers的伟大工程:

public static void clearStickers(FirebaseAppIndex firebaseAppIndex) { 
    Task<Void> task = firebaseAppIndex.removeAll(); 
    task.addOnSuccessListener(__ -> Log.i(TAG, SUCCESS_IN_CLEARING_STICKERS)); 
    task.addOnFailureListener(e -> Log.i(TAG, FAILED_TO_CLEAR_STICKERS, e)); 
} 

public static void setStickers(final Context context, FirebaseAppIndex firebaseAppIndex) { 
    try { 
     List<Indexable> stickers = getIndexableStickers(context); 
     Indexable stickerPack = getIndexableStickerPack(context); 

     List<Indexable> indexables = new ArrayList<>(stickers); 
     indexables.add(stickerPack); 

     Task<Void> task = firebaseAppIndex.update(
       indexables.toArray(new Indexable[indexables.size()])); 
     task.addOnSuccessListener(__ -> Log.i(TAG, SUCCESS_IN_INSTALLING_STICKERS)); 
     task.addOnFailureListener(e -> Log.i(TAG, FAILED_TO_INSTALL_STICKERS, e)); 

    } catch (IOException | FirebaseAppIndexingInvalidArgumentException e) { 
     Log.e(TAG, ERROR_IN_SETTING_STICKERS, e); 
    } 
} 

private static Indexable getIndexableStickerPack(final Context context) 
     throws IOException, FirebaseAppIndexingInvalidArgumentException { 
    List<Indexable> indexables = StreamSupport 
      .stream(getStickerBuilders(context)) 
      .map(IndexableBuilder::build) 
      .collect(Collectors.toList()); 

    StickerPackBuilder stickerPackBuilder = Indexables.stickerPackBuilder() 
      .setName(STICKER_PACK_NAME) 
      // Use the first sticker as the hero for the pack 
      .setUrl(String.format(STICKER_PACK_URL_PATTERN, 0)) 
      // Defaults to the first sticker in "hasSticker". Used to select between sticker 
      // packs so should be representative of the sticker pack. 
      .setImage(StickersDataFactory.getAllStickerReference().get(0).getURL()) 
      .put("hasSticker", indexables.toArray(new Indexable[indexables.size()])) 
      .setDescription(STICKER_PACK_NAME); 
    return stickerPackBuilder.build(); 
} 

private static List<Indexable> getIndexableStickers(final Context context) 
     throws IOException, FirebaseAppIndexingInvalidArgumentException { 
    List<Indexable> indexableStickers = new ArrayList<>(); 
    List<Indexable.Builder> stickerBuilders = getStickerBuilders(context); 

    for (Indexable.Builder stickerBuilder : stickerBuilders) { 
     stickerBuilder.put("keywords", getKeywordsForSticker(context, null)) 
       .put("isPartOf", new Indexable.Builder("StickerPack").setName(STICKER_PACK_NAME) .build()); 

     indexableStickers.add(stickerBuilder.build()); 
    } 

    return indexableStickers; 
} 

private static List<Indexable.Builder> getStickerBuilders(final Context context) 
     throws IOException, FirebaseAppIndexingInvalidArgumentException { 
    List<Indexable.Builder> stickerBuilders = new ArrayList<>(); 

    // Start from 1 because the first sticker will be used as hero for the pack 
    for (int i = 1; i < StickersDataFactory.getAllStickerReference().size(); i++) { 
      stickerBuilders.add(new Indexable.Builder("Sticker") 
        .setName(StickersDataFactory.getAllStickerReference().get(i).getName()) 
        .setUrl(String.format(STICKER_URL_PATTERN, i)) 
        .setImage(StickersDataFactory.getAllStickerReference().get(i).getURL()) 
        .setDescription("Random description") 
        .put("keywords", getKeywordsForSticker(context, StickersDataFactory.getAllStickerReference().get(i))) 
        .put("isPartOf", new Indexable.Builder("StickerPack").setName(STICKER_PACK_NAME) .build())); 
    } 

    return stickerBuilders; 
}