Sencha Touch、Apigee JS SDK 和 Phonegap 可在浏览器中工作,但不能在 IOS 中使用

Sencha Touch, Apigee JS SDK, and Phonegap working in browser but not IOS

提问人:Daniel Willems 提问时间:12/3/2013 最后编辑:rmaddyDaniel Willems 更新时间:12/5/2013 访问量:394

问:

使用 - Sencha Touch 2.3、Apigee Usergrid JS SDK 和 PhoneGap 3.2。

我能够在浏览器中运行我的应用程序并完美地访问 Apigee。

index.html:

`<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"
type="text/javascript"></script>
<script src="../lib/apigee.min.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true </script>
<!-- The line below must be kept intact for Sencha Command to build your application -->
<script id="microloader" type="text/javascript" src=".sencha/app/microloader/development.js"></script>`

这是我直接来自 Apigee Javascript SDK 的代码(同样在 index.html 中):

`<script type="text/javascript">
     var client = new Usergrid.Client({
         orgName:'orgname',
         appName:'sandbox',
         logging: true, 
         buildCurl: true
        });
</script>`

所以在我看来,要测试“客户。URI“给了我”https://api.usergrid.com“,正如预期的那样。那里都很好。

此处的“客户端”图像。URI”。http://minus.com/i/BtmXiuVxljsV

当我运行时

$ sencha app build -run native

这就是我遇到问题的地方。一切都很好,除了我试图绑在 Apigee 上。当我这样做时,该应用程序不会在IOS模拟器中加载。在我的 phonegap 配置或“白名单”中,我使用“*”通配符打开了对所有内容的访问。我很确定这是有效的,因为谷歌地图 API 运行良好。我试着把“客户端。URI“测试,因此当我单击按钮时,它会向我显示 URI。同样,这在浏览器中有效,但在模拟器中无效。该应用程序加载正常,但是当我单击按钮时,没有任何反应。我希望这是有道理的。我想确保应用程序能够加载,并且可以测试“客户端”。URI“测试尽可能独立。同样,如果我尝试在加载时呈现它,那么该应用程序甚至永远不会在模拟器中加载。

当我单击应该带有 URI 警报的按钮时,我在系统 .log 中得到这个:

` <Error>: __hid_dispatch_pthread_root_queue_create_block_invoke: specific=0x505c260 pthread_self=0xb0115000`

我可以继续在浏览器中开发并访问我的 Usergrid 后端,但我真的很想修复这个错误并确保我没有处理更大的架构问题。

谢谢大家。

JavaScript API sencha-touch apigee

评论

0赞 Stephen Nguyen 12/3/2013
您在 iOS 模拟器中模拟的是哪个版本的 iOS?
1赞 Daniel Willems 12/4/2013
用 6 再次尝试并得到相同的结果。

答:

1赞 Mike Malloy 12/4/2013 #1

可能产生影响的一件事是尝试从 XCode 而不是从命令行运行模拟器。打开 Phonegap 创建的 .xcodeproj 文件,然后从那里运行。如果模拟器仍无法启动,请告知我们。

评论

0赞 Daniel Willems 12/4/2013
因此,我按照您提到的运行了xcodeproj文件,并得到了相同的结果。不过,我确实使用了phonegap命令行创建了.xcodeproj文件。完成后,我在 xcode 中打开并运行模拟器。同样,相同的结果。只是为了澄清模拟器确实使用命令行工具启动,只要我不对 Usergrid API 进行任何调用。我在按钮点击事件的警报中放置了一个,但这不是渲染。因此,这似乎是特定于与Usergrid交互的东西。
1赞 Daniel Willems 12/5/2013 #2

最后!谢天谢地,Android提供了很好的调试帮助。我改变了路线,并在Android上尝试了一下。

它告诉我它找不到Apigee.min.js文件。似乎当 Phonegap 编译它时,要么把它放在错误的地方,要么我一开始就这样做了(我很确定我知道它是什么)

我把我的本地文件改成了这个:

 <script src="https://apigee.com/usergrid/sdk/usergrid.0.10.5.js"></script>

它现在可以在 IOS 和 Android 上运行。很奇怪,因为它以前在浏览器中运行良好。

如果有人对我将文件放入我的应用程序中出错的地方有任何反馈,请告诉我。正如你在上面看到的,它在:

<script src="../lib/apigee.min.js"></script>

此外,如果有人在部署时对我是否应该继续使用 Apigee 作为源或将文件添加到我的应用程序有建议。

感谢大家抽出时间接受采访。