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())};
答
的问题是在代码中的另一部分,因为你上面贴东西在下面的例子改编自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;
}
我也有我的贴在gboard没有出现问题。我必须首先获得Gboard的最新测试版以获取贴纸功能。我的个人贴纸Allo即时出现。然后我用NBAmoji应用程序测试了贴纸功能,它的工作完美无瑕。但我仍然没有看到我的应用出现在那里的标签。我几乎完全遵循了示例代码,我没有得到任何错误。似乎一切正常,更新任务成功完成。示例代码:https://github.com/firebase/quickstart-android/tree/master/app-indexing – cybergen
要获取Gboard中的贴纸,请长按表情符号按钮(逗号)。新的贴纸图标位于emoji图标和gif图标之间的最底部。按下它,你会看到一些贴纸(如果有的话)或提示从游戏商店下载一个sitcker应用程序。当心,也有一些蹩脚的... ;-) – cybergen
但是,如果您希望其他人帮助您,您应该提供更多的“IndexingService”和“StickerProvider”代码,并详细描述您的问题。日志说什么?任何错误?更新任务如何运作? – cybergen