Articles of iOS

是否有任何单一的框架来编写iOS,Android(甚至Windows Phone)?

我希望有一个跨平台框架作为这些平台解决方案。 我的应用程序需要位置服务,套接字编程,摄像头访问和推送通知。 所以,网络应用程序不是要走的路….有没有任何工具或框架来做这个? 谢谢。

试图在iOS应用程序上使用“干净的架构”

最近我一直在重新思考我的android架构项目 ,试图让它适应更“干净的架构”,特别是“Uncle Bob”所设计的那种设计。 它涉及几层抽象,一个很好的职责分离和dependency injection实现的非常强的依赖倒置; 这最终导致了一个非常分离的便携式系统。 通过unit testing和集成测试进行测试的完美候选者。 在我的Android实现中,我最终得到了三个不同的模块或层: – 域 :实体,交互者,演示者(纯java模块) – data :(充当将数据提供给域的存储库) (android库模块) – 演示 :ui相关的东西,片段,活动,视图等(android应用程序模块) 所以,我正在试图找出iOS生态系统中最好的方法。 我尝试创建一个包含多个目标的项目来实现相同的解决方案: – domain : 命令行目标 (看起来非常奇怪,但我认为是最纯粹的快速目标) – 数据 : cocoa触摸框架 – 演示 : cocoa触摸框架 通过这种方法,我可以按照我对android模块的方式使用这些目标。 但我发现第一个警告是我需要手动将每个新文件添加到依赖目标。 但是我的知识在有多个目标的项目中非常有限。 我的意思是我从未创建过具有多个目标的iOS应用程序。 所以即使解决方案是使用框架(cocoa touch / cocoa)作为目标而不是域层的命令行模块,我也不知道。 任何想法都会非常感激。 谢谢!

本机编程为移动开发的任何优势?

我需要在一些主要的移动操作系统上为公司开发应用程序,特别是iOS,Android和WP7。 我最初计划为三种不同的操作系统编写三个独立的应用程序 – 每个操作系统使用本机SDK。 但是,这样做有什么好处吗? 有许多可用的跨平台工具 – Sencha,Phonegap,Rhodes等。他们创建的应用程序在各种设备上的“原生”程度如何? 他们有什么样的硬件集成(相机,GPS,本地存储等)? 我没有时间限制,如果有任何优势,那么开发三个本机应用程序绝对没有问题。 编辑:如果重要,应用程序将同时具有在线和离线function。

为什么单线程模型用于将UI更新为主线程?

Qt医生说, 如上所述,每个程序在启动时都有一个线程。 该线程称为“主线程”(在Qt应用程序中也称为“GUI线程”)。 Qt GUI必须在此线程中运行。 Android文档说, 与活动和其他组件一样,服务在应用程序进程的主线程中运行 和iOS, 强烈建议不要从后台线程(例如计时器,通信等)更新UI控件等。 这可能是崩溃的原因,有时很难识别。 而是使用这些来强制在UI线程(始终是“主”线程)上执行代码。 为什么他们使用单线程模型来更新UI?

iPhone中的Android Toast?

当我编写Android应用程序时,我喜欢Toastfunction。 有没有办法在使用MonoTouch(C#.NET)的iPhone开发中获得这种设置并忘记popup消息?

将用户重定向到iTunesapp store或Google Play商店?

我正在寻找一个简单的解决方案来发布我的应用程序的一个链接,例如在Facebook上,如果用户使用移动设备访问它,它应该自动重定向到正确的应用程序商店。 否则,应将用户重定向到我的网站。 iOS应用程序: http : //itunes.apple.com/de/app/dawawas/id588285122 Android应用: https : //play.google.com/store/apps/details?id = de.conceptspace.dawawas.greenturtle&hl = en 网站: https : //www.dawawas.com/

适用于iOS和Android的移动设备唯一性

我正在寻找一种使用唯一标识符安全地识别移动设备的方法。 每次我在特定设备上安装我的应用程序时,我都应该获得相同的唯一标识符。 此标识符将上载到服务器后端并保存以供将来参考。 必须在不依赖电话的IMEI号码的情况下实现这一点。 苹果早已禁止它用于iOS,谷歌可能会在明天为Android做同样的事情。 对于Android,至少有ANDROID_ID 。 iOS怎么样? 什么都没有? Android和iOS都必须采用标准的,万无一失的方式。 我对任何/所有/付费/免费/本机/第三方解决方案感兴趣。 其他公司为解决这个问题做了什么? 我已阅读以下post: 1. 识别应用程序安装 。 2. 是否有唯一的Android设备ID? 3. 为每个Android设备获取唯一的ID签名 。 4. iOS上的持久交叉安装设备标识符:使用Keychain 。 5. UIDevice uniqueIdentifier已弃用 – 现在该怎么办? 6. 始终在iOS 7中获取唯一的设备ID 。 7. iOS7 – 设备唯一标识符 。 8.将 唯一ID实现为UUID并将其保存在Keychain中 。 我想超越这个。 还有什么可以做的? 那里有一个全面的,一劳永逸的防弹解决方案吗?

如何在iPhone / iPad游戏中测量和改善电池使用(Android也)

我的游戏使用了太多的电池。 与同类游戏相比,我不确切知道它使用了多少,但它使用了太多。 玩家抱怨它使用了很多,其中一些人注意到它使他们的设备“运行热”。 我刚刚开始研究这个问题,并想提出一些理论和实际问题来缩小搜索范围。 这主要是关于我的游戏的iOS版本,但可能许多相同的问题影响Android版本。 很抱歉提出许多子问题,但他们似乎都是相互关联的,我认为最好将它们放在一起。 附注:我的游戏不进行网络访问(在几个地方称为大电池耗尽)并且在后台不消耗大量电池; 它是前台运行的问题。 (1)我知道有API可以读取电池电量,所以我可以进行一些自动化测试。 我的问题是:关于需要多长时间(或者可能:大约需要多少电池耗电量)才能让物品运行以获得可靠的读数? 例如,如果它运行10分钟是可靠的吗? 如果它排出10%的电池,那可靠吗? 或者运行更长时间更好(或者说,看看电池耗电50%需要多长时间)? 我在这里要问的是电池表的灵敏度/可靠性,所以我知道每次测试需要多长时间。 (2)我试图了解电池使用率高的可能原因。 下面列出一些可能的因素。 请帮助我了解哪些是最有可能的罪魁祸首: (2a)和很多游戏一样,我的游戏需要在每一帧上绘制全屏。 它的运行速度约为30 fps。 我知道Apple说“只需要根据需要刷新屏幕”,但我几乎需要绘制每一帧。 实际上,我可以将一些工作只绘制到已经改变的屏幕部分,但在我的情况下仍然是屏幕的大部分。 在任何情况下,即使我可以将绘图本地化到屏幕的一部分,我仍然每秒做一次OpenGL交换缓冲区调用30次,所以我努力工作以减少一点点真的很重要? (2b)当我绘制屏幕元素时,会有一定量的浮点数学运算(例如,在计算纹理UV坐标中),以及一些(较少)双精度数学运行。 与类似的整数运算相比,我不知道它们在电池方面有多贵。 我可能会缓存很多这些值而不必重复计算它们,如果那可能是胜利的话。 (2c)渲染场景时我会进行一定量的纹理切换。 我以前只是担心这会使游戏太慢(它没有),但现在我也想知道减少纹理切换是否会减少电池的使用。 (2d)我不确定这对我来说是否实用,但是:我一直在阅读着色器和OpenCL,我想了解我是否要将一些CPU处理卸载到GPU,这是否可能节省电池(除了可能在矢量型操作中运行速度更快)。 或者它可能会在GPU上使用比CPU更多的电池? 我意识到我可以通过禁用游戏的某些部分并进行迭代电池测试运行来缩小哪些因素在起作用(因此问题的第(1)部分)。 只是因为禁用并不是微不足道的,而且有足够的潜在罪魁祸首,我认为我首先要求提供一般性建议。

将react-native项目捆绑为iOS框架或(.aar)Android库

我正在探索使用react-native创建一个iOS框架(android库)的可能性,它可以分发,并可以通过包含在构建应用程序时与应用程序集成。 例如,维护单个代码库以为ios创建“.framework”,或者为.log(基本上编译代码而不是反应组件代码)创建.jar作为开发人员社区的分发。

iOS和Android中的AES加密,以及C#.NET中的解密

首先是第一件事。 前段时间我在Android中需要一个简单的AES加密来加密密码,并将其作为密码被解密的.net Web服务的参数发送。 以下是我的Android加密: private static String Encrypt(String text, String key) throws Exception { Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”); byte[] keyBytes= new byte[16]; byte[] b= key.getBytes(“UTF-8”); int len= b.length; if (len > keyBytes.length) len = keyBytes.length; System.arraycopy(b, 0, keyBytes, 0, len); SecretKeySpec keySpec = new SecretKeySpec(keyBytes, “AES”); IvParameterSpec ivSpec = new IvParameterSpec(keyBytes); cipher.init(Cipher.ENCRYPT_MODE,keySpec,ivSpec); byte[] results = […]