这是一个基于简单的Corona SDK示例 - 无法通过pubnub控制台进行订阅。
2015-1-8 9:51:29
收藏:0
阅读:73
评论:2
我正在使用 Corona 运行默认的 pubnub HelloWorld 示例。在模拟器中,Corona SDK 程序运行正常,但是由于某种原因,我无法在 pubnub 控制台中看到输出。以下是用于 pubnub Corona SDK 的源代码。
require "pubnub"
multiplayer = pubnub.new({
publish_key = "my_publish_key",
subscribe_key = "my_subscribe_key",
secret_key = nil,
ssl = nil,
origin = "pubsub.pubnub.com"
})
multiplayer:subscribe({
channel = "hello-world-corona",
callback = function(message)
print(message.msgtext)
end,
errorback = function()
print("Oh no!!! Dropped 3G Conection!")
end
})
function send_a_message(text)
multiplayer:publish({
channel = "hello-world-corona",
message = { msgtext = text }
})
end
function send_hello_world()
send_a_message("Hello World!!!")
end
timer.performWithDelay( 500, send_hello_world, 10 )
send_hello_world()
我使用的是 pubnub 提供的 subscribe 和 publish 密钥。创建 API 密钥时,我使用了 pubnub 的这些库:https://github.com/pubnub/lua
问题在于,当我为 Android 构建 APK 并运行它时,我无法在 http://www.pubsub.com/console 控制台上看到消息。我使用了给定的 subscribe 和 publish 密钥,但是什么都没有显示。我曾经因为没有互联网权限而出现运行时错误,但是后来将我的 build.settings 改为以下内容后就不再出现运行时错误了:
build.settings:
settings =
{
android =
{
permissions =
{
{ name = ".permission.C2D_MESSAGE", protectionLevel = "signature" },
},
usesPermissions =
{
-- Required by the MapView to fetch its contents from the Google Maps
--servers.
"android.permission.INTERNET",
"android.permission.GET_ACCOUNTS",
"android.permission.RECEIVE_BOOT_COMPLETED",
"com.google.android.c2dm.permission.RECEIVE",
".permission.C2D_MESSAGE",
-- Optional permission used to display current location via the GPS.
"android.permission.ACCESS_FINE_LOCATION",
-- Optional permission used to display current location via WiFi or
-- cellular
-- service.
"android.permission.ACCESS_COARSE_LOCATION",
},
usesFeatures =
{
-- If you set permissions "ACCESS_FINE_LOCATION" and
--"ACCESS_COARSE_LOCATION" above, then you may want to set up
--your app to not require location services as follows.
-- Otherwise, devices that do not have location sevices (such as a GPS) will
-- be unable
-- to purchase this app in the app store.
{ name = "android.hardware.location", required = false },
{ name = "android.hardware.location.gps", required = false },
{ name = "android.hardware.location.network", required = false },
},
},
}
点赞
用户524733
PubNub Corona SDK 调试发布事件
请确保注册 error 回调来检测您的发布调用事件是否存在问题。下面是一个完全功能的 pubnub.publish({...}) 调用的示例。
--
-- 调用发布功能
--
function publish(channel, text)
pubnub_obj:publish({
channel = channel,
message = text,
callback = textout,
error = textout
})
end
完整的 Lua 发布演示示例:
使用此示例来测试 Lua Corona 应用程序以成功发布消息。您将看到文本输出以调试代码。
--
-- PubNub:发布示例
--
require "pubnub"
require "PubnubUtil"
textout = PubnubUtil.textout
--
-- 初始化 PubNub 状态
--
pubnub_obj = pubnub.new({
publish_key = "demo",
subscribe_key = "demo",
secret_key = nil,
ssl = nil,
origin = "pubsub.pubnub.com"
})
--
-- 隐藏状态栏
--
display.setStatusBar(display.HiddenStatusBar)
--
-- 调用发布功能
--
function publish(channel, text)
pubnub_obj:publish({
channel = channel,
message = text,
callback = function(r) --textout(r)
end,
error = function(r) textout(r)
end
})
end
--
-- 主要测试
--
local my_channel = 'lua-dsm'
--
-- 发布字符串
--
publish("abcd", 'Hello World!')
--
-- 发布字典对象
--
publish("efgh", { Name = 'John', Age = '25' })
--
-- 发布数组
--
publish("ijkl", { 'Sunday', 'Monday', 'Tuesday' })
在我们的文档页面中查看使用 JavaScript 发布 API 参考 发布消息。
2014-08-29 20:11:42
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
请添加成功和错误回调,并且在你的问题中告诉我们你得到了什么,以及它是来自成功还是错误回调。
实现成功和错误回调的示例可以在https://github.com/pubnub/lua/blob/master/corona/examples/example-publish/main.lua#L29找到。