Buildfire - 是不是可以从管理控制面板导航到插件
Posted
技术标签:
【中文标题】Buildfire - 是不是可以从管理控制面板导航到插件【英文标题】:Buildfire - Is it possible to navigate to a plugin from the admin control panelBuildfire - 是否可以从管理控制面板导航到插件 【发布时间】:2017-12-12 16:01:20 【问题描述】:我有两个需要相互通信的插件。其中一个插件允许用户创建锻炼。另一个插件需要能够允许用户将锻炼插件链接到特定的锻炼。
为此,最好能够进入消费插件,单击“链接锻炼”之类的内容,然后通过 buildfire.navigation.navigateTo 将我带到锻炼插件,我可以在其中选择一个锻炼(因为锻炼数据只能访问此插件)。从那里,一旦做出选择,它会将我导航回另一个插件,其中包含我链接的锻炼记录的 ID。这样,我可以保存锻炼的 ID,并且每当有人想从小部件中查看锻炼时,它就能够将他们导航到锻炼插件并加载正确的 ID。
当我尝试在控制面板中实现此功能时,navigation.navigateTo 会出错并显示以下消息:
postMessageHandler error: TypeError: Cannot read property 'source' of undefined
at Object.navigateTo (pluginAPI.js:265)
at PluginAPI.postMessageHandler (pluginAPI.js:221)
at tryPMH (postMaster.js:44)
at Object._acceptRequest (postMaster.js:62)
at postMessageHandler (postMaster.js:29)
navigation.navigateTo 只能在小部件端使用吗?这是我的导航对象供参考:
pluginId: '6d9d8456-d2c9-4ddb-80b8-**********',
instanceId: '6drt3456-d2c9-4ddb-80b8-fdbbff854r1b-*********',
folderName: 'theplugin',
title: '',
queryString: '?id=abc123def456'
另外,我不确定文件夹名称应该是什么。 SDK源代码似乎需要它,但我不知道应该放什么。我放了一些我认为可能有用的东西,但这可能是为什么这不起作用的罪魁祸首。正在寻找对此的确认。
尽管如此,即使我使用小部件的导航,当它加载新插件时,新加载插件的管理面板显示“404 未找到”而不是加载管理面板。对此也有什么想法吗?
【问题讨论】:
我能帮助您解决您的问题吗? @attila226 是的,这很有帮助。谢谢。是否有办法在 BuildFire 系统中的两个插件之间建立共享数据库。必须让插件以这种方式进行通信有点乏味和混乱。如果有某种方法可以将插件链接在一起,那么它可以提供更强大的产品,例如允许插件作为一个集合使用,或者单独使用。 数据存储旨在用于单个插件实例中,而不是跨插件实例。 buildfire.localStorage 确实充当了跨应用程序共享数据的一种机制,尽管它不像数据存储那样功能丰富。另一种选择是使用第三方服务,例如 Firebase,它具有数据库即服务功能,可以轻松集成到您的解决方案中。 【参考方案1】:如果您希望控件触发小部件上的导航,则需要使用messaging。请参阅下面的示例。
在控件上:
buildfire.messaging.sendMessageToWidget(
name: 'OPEN_PLUGIN',
message:
data: pluginData
);
在小部件上:
buildfire.messaging.onReceivedMessage = function(message)
var plugin = event.message.data;
switch (message.section)
case 'OPEN_PLUGIN':
if (plugin && plugin.pluginType && plugin.pluginType.folderName)
fName = plugin.pluginType.folderName;
else if (plugin && plugin.folderName)
fName = plugin.folderName;
buildfire.navigation.navigateTo(
pluginId: plugin.pluginId,
instanceId: plugin.instanceId,
title: plugin.title,
folderName: fName
);
break;
就文件夹名称而言,有多种获取方式。一种简单的方法是在控制面板中编辑插件实例。 URL 如下所示:
/pluginControl/ba4139dd-09c6-4121-aa4a-c72570af07fc/ba4139dd-09c6-4121-aa4a-c72570af07fc-************/Home/52/
翻译成以下格式:
/pluginControl/pluginId/pluginInstanceId/title/folderName
所以在本例中,文件夹名称为 52。
【讨论】:
以上是关于Buildfire - 是不是可以从管理控制面板导航到插件的主要内容,如果未能解决你的问题,请参考以下文章
BuildFire - 如何使用 SDK 从管理面板触发推送通知?