我的iOS应用程序使用自定义高度UINavigationBar导致新iPhone X上出现一些问题.
如果应用程序在iPhone X上运行,是否有人已经知道如何以编程方式(在Objective-C中)进行可靠检测?
编辑:
当然,检查屏幕的大小是可能的,但是,我想知道是否有一些"内置"方法,如TARGET_OS_IPHONE检测iOS ...
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
if (screenSize.height == 812)
NSLog(@"iPhone X");
}
Run Code Online (Sandbox Code Playgroud)
编辑2:
我不认为,我的问题是链接问题的重复.当然,有一些方法可以"测量"当前设备的不同属性,并使用结果来决定使用哪个设备.然而,这不是我的问题的实际问题,因为我在第一次编辑时试图强调.
实际的问题是:"是否可以直接检测当前设备是否是iPhone X(例如,通过某些SDK功能)或者我是否必须使用间接测量"?
到目前为止给出的答案,我认为答案是"不,没有直接的方法.测量是要走的路".
自从我更新到最新的Xcode版本11.0(11A420a)以来,调试非常缓慢且麻烦。
编辑:更新到11.1 GM(11A1027)之后,问题仍然相同。
编译项目并在模拟器或设备上运行它没有问题。但是,到达断点时,Xcode或多或少变得不可用:
我在具有3.2 GHz i7和32 GB内存的Mac mini 2018上运行Xcode。我之前在同一台计算机上使用过Xcode 10,没有任何问题。
搜索“ Xcode慢”会带来大量线程,当然还有可能的解决方案。从我作为iOS开发人员的那几年开始,我知道Xcode从来不是最快和稳定的程序。但是,它从来没有像现在这样糟糕过。
不幸的是,所有的窍门(重启Xcode或Mac,清理项目,清理Xcode库文件夹等)均无效,
因此,最大的问题是:
这是Xcode 11中的已知问题吗?有没有已知的解决方案?
我有一个Android应用程序,我正在使用谷歌地图API for Android v2.在我将手机升级到Marshmallow之前,我的手机工作正常.更新手机后,我卸载它并再次使用Android Studio安装它后,它开始随机崩溃.而每次错误都是
V/GoogleSignatureVerifier:签名无效.实测值:MIIDDTCCAfWgAwIBAgIEPmxzXDANBgkqhkiG9w0BAQsFADA3MQswCQYDVQQGEwJVUzEQMA4GA1UE ChMHQW5kcm9pZDEWMBQGA1UEAxMNQW5kcm9pZCBEZWJ1ZzAeFw0xNTA5MjExMjE1MDNaFw00NTA5 MTMxMjE1MDNaMDcxCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdBbmRyb2lkMRYwFAYDVQQDEw1BbmRy b2lkIERlYnVnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoTlzAY3DX0 + vQmRo5stW izwv76mghc1mbdxQnI16N6Ci/LFPOsiQLfYgt/qqitKCmo2kWWzfKNxN1Qyg5KaFdXRxpM8Ec7Xm fkMX5cXzJOBDS62uWoDXpjiaXNOBeCvHDwC02EfOGfBd8csnO7sm3htHP8l2Jbn4uAY/zRQ + F4 + C Y477hSMxUvcDYoOoAcsye7pEu1bvPLSRxM44kjjhBFJlLYw6QtzE00khMrwdgBQwSdY0vtUPj9NM hKGRuGoK/suIpd9e82EhqbUSlYsd62I/HV3390Eo/N2xXCsK7jrRdz6G9MjHfnUQLN80frZXGApl LWiBti2soI9HhI ++ dQIDAQABoyEwHzAdBgNVHQ4EFgQU3JFv8ivvt36O8WrsmkXRWYCDbEEwDQYJ KoZIhvcNAQELBQADggEBAFLFGhfV6F4VOMCdKky6drHD10LzvR8/6QJzf/yp1QARzb3aR319g1my f6Ffsaam9SKKj6OO92Jz7RTgUvZ6aD5sgRJXKcetmrGNWLGvsg0Rn + OxyEJ6dp4z49Oj5xyXjREp 6zv3QXxENib6EmPYKkFRS6cIe3QOMPsa6Q0KBKQFNnRAW + A + VBAVfEQYB1lgUMXUD + L9pc9EGNcN zbatMn4FuWeyrhVaiSgMqyNHghUISgAZF76ImkQoPHVwgu7DzQQ44bXAwAbLFIwVhate/C0zN5ps TjBZ4ojF0Z9mFM9tbLzBYCL2BpNCtYbp9uMpp4YtnX0 + 2sdxU6vi + ffSeAk =
看起来更新的Google Play服务可能会导致问题.帮助将不胜感激.
ListView在iOS上重新排序项目非常简单.现在我想在Android上做同样的事情,但它似乎相当麻烦:SDK不支持项目重新排序,并且必须自己实现它或使用第三方实现.
我找到了几个处理这个问题的文章和帖子,但它们都很老(2 - 3年).例如,bauerca DragSortListView在许多地方被引用,但不再维护该项目.由于我的应用程序应该支持Android 4+,我只想询问是否有更好的做法.
当然,拖放重新排序对于用户来说是最方便的方式,但我对任何有效的解决方案都是开放的(例如使用带有向上/向下的上下文菜单)
在Android 4+中提供商品重新订购的最佳方式是什么?
有没有像默认/标准的方式这样做?
在处理我的一个应用程序的新版本时,Xcode今天告诉我,由于开发配置文件已过期,它无法再运行该项目.
组织者显示所有开发配置文件"未找到有效签名身份"和所有分发配置文件"配置文件已过期".
当然,配置文件到期并不令人惊讶.在过去,我所要做的只是点击"续订",但这不再适用.输入我的帐户Xcode的用户名和密码后显示错误消息"没有为参数'certificateIds'提供值"...
我能做什么?
而不是使用管理器,直接访问了Provisioning Center网页."iOS应用程序/证书/所有"部分中有两个条目:1."我的名称iOS开发过期日期:2012年3月17日"2."我的名称开发过期日期:2013年3月19日"
单击其中一个证书会显示"撤消"或"下载"证书的选项.还有一个"+ Button"来创建一个新的证书,但选项"iOS App Development签署您的iOS应用程序的开发版本".已停用.
在"配置文件"部分中,所有开发配置文件都标记为"活动",所有分发配置文件标记为"已过期".缺少"续订"选项时,只有"编辑"和"删除"选项可用."编辑"选项显示配置文件详细信息和"生成"按钮.我认为"生成"会创建一个新版本,但在按下按钮后,只会显示一个进度指示器,但没有结果.重新加载页面后,状态保持不变.
因此,没有更新现有证书和配置文件的选项(有吗?).因此,我必须创建新证书,但 - 如上所述 - 此选项显示为灰色.我假设我必须先删除/撤销现有证书.单击"撤消"会显示一个非常明确的警告:" 撤销此证书将使其无效,并且可能会影响使用此证书的任何相关服务或配置文件. "
我担心撤销证书可能会影响我在App Store中的现有应用程序 - 该应用程序可能会因销售而被删除,因为它们所基于的证书已被删除.
当然,这是我想避免的情景.有没有人确切知道在为现有证书使用Revoke选项时会发生什么.这甚至会影响App Store应用程序吗?
非常感谢你!
我想在我的Android 4+应用程序中添加一些IAP.这看起来很简单,但有一个问题:Google提供了两个教程,描述了如何使用最新的IAP API v3,它们使用了截然不同的实现.哪一个更好/更正?
实现应用内结算描述了如何实现"ServiceConnection"以将活动绑定到"IInAppBillingService".该服务可直接用于执行所有IAP操作,例如查询产品信息或执行购买.
另一方面,准备应用程序内结算应用程序描述了如何使用IabHelper类连接到服务并运行所有与IAP相关的Stuff.
我对这两个教程是如何连接感到困惑.没有关于教程与它们描述的不同方法之间关系的信息.
到目前为止,我认为,IabHelper只是一个包装器,应该有助于以IInAppBillingService更方便的方式使用它.这是正确的吗?
使用便利包装器使复杂任务的工作变得更加容易通常是个好主意.另一方面,包装器不仅使复杂的实现远离开发人员,而且还保持API的直接反馈/响应.这可以使调试更难.考虑到这一点:哪种解决方案更好?如第一篇教程中所述直接使用API或使用IabHelper?
我的Android 4+应用程序连接到自定义Web服务,该服务用于每隔几分钟同步一次数据.为了确保在线数据始终是最新的,我想在应用程序关闭/发送到后台时触发同步.
在iOS下这很容易:
applicationDidEnterBackground:在AppDelegate中收听beginBackgroundTaskWithName:开始您长时间运行的后台任务,并避免在任务仍在运行被暂停如何在Android上执行此操作?
第一个问题是,没有任何东西相当于applicationDidEnterBackground:.到目前为止我发现的所有解决方案都建议使用主要的Activities onPause()方法.但是,这会在主要Activity暂停时调用,这也是Activity在应用程序中启动另一个时的情况.接口的onActivityPaused()方法是正确的ActivityLifecycleCallbacks.
那么,如何检测应用程序(不只是一个Activity)是关闭还是发送到后台?
第二个问题是,我没有找到任何关于如何运行后台任务的信息.所有解决方案都指向简单的启动AsyncTask,但这真的是正确的解决方案吗?
AsyncTask将启动一项新任务,但当应用程序关闭/不活动时,此任务是否也会运行?我需要做什么,以防止应用程序和任务在几秒钟后被暂停?在应用程序完全暂停之前,如何确保任务可以完成?
android background-process android-lifecycle android-asynctask
在之前的iOS版本中,我曾经NSFoundationVersionNumber检测过iOS版本:
#define IS_IOS10orHIGHER (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_9_x_Max)
#define IS_IOS9orHIGHER (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_8_3)
#define IS_IOS8orHIGHER (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1)
#define IS_IOS7orHIGHER (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
#define IS_IOS6orHIGHER (floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_6_0)
...
Run Code Online (Sandbox Code Playgroud)
现在我想对iOS 11做同样的事,但我找不到正确的NSFoundationVersionNumber.文档显示NSFoundationVersionNumber_iOS_9_x_Max是最新的.
那么,NSFoundationVersionNumber如果使用iOS 11 ,如何检测是否正确?
我正在努力在真正的Apple Watch上调试我的WatchKit扩展/应用程序.使用模拟器调试iPhone App和WatchKit Extension,模拟器没问题:
观察iPhone应用程序和手表应用程序的工作是没有问题的.至少不在模拟器中.
我想在真正的Apple Watch上做同样的事情.但是,当我选择WatchKit应用程序配置文件和我的真实iPhone(而不是模拟器)并单击"运行"时,没有任何反应.这意味着Xcode似乎构建并启动了应用程序,但设备上没有任何反应.Xcode中的状态字段显示:
构建MyApp WatchKit应用程序:MyApp WatchKit扩展
构建MyApp WatchKit应用程序:完成...
在我的iPhone 6上运行MyApp
这是所有的了.没有调试窗口,断点被忽略或不起作用,并且应用程序既不在iPhone上也不在Apple Watch上启动.
我发现了有关在真实设备上调试问题的其他问题(例如此处),但它们都涉及安装和签名问题.在我的情况下,iPhone App和WatchKit App都安装没有任何问题.当我点击Watch上的应用程序图标时,我可以启动并使用该应用程序.问题是我无法调试此过程.
为什么我需要在真实设备上调试该过程?好吧,有一件事我无法使用模拟器进行测试:openParentApplication:reply:当iPhone应用程序尚未运行时,当应用程序尝试联系iPhone应用程序时会发生什么?这在模拟器中完美运行,但在真实设备上,Watch Apps似乎没有得到iPhone应用程序的回复,只是永远等待.
我已经找到解决这个问题的提示,但是无法调试Watch App并看看代码是如何执行的,我无法确定发生了什么......
我正在使用SDK 10.7作为部署目标的Mac OS X应用程序.NSScrollView包含图像缩略图的水平列表.位于ScrollView中心的缩略图表示所选图像,该图像以完整大小显示在ScrollView下方.这与Finder Cover-Flow非常相似,除了我的应用程序中的图像不会流动但只是向外滚动.
我想限制滚动仅在缩略图正好位于中心时停止.NSView方法adjustScroll:没有解决方案.这将禁用"平滑"滚动并让ScrollView从一个缩略图跳转到下一个缩略图.
我需要某种动作/回调告诉我ScrollView完成了滚动.我可以检查位置是否正常(如果缩略图在中间)或向后/向前滚动到最近的缩略图.但NSScrollView不提供这样的回调.
我试着观察ScrollViews contenView框架的变化.交替帧改变我启动计时器.如果计时器在启动之前没有重新启动,我认为滚动停止了.这不是很好.如果滚动仅在短时间内停止(例如,因为手指被移动以进行另一次轻扫手势),则下一次滚动会干扰位置的校正.
在iOS下使用UIScrollView可以毫无问题地解决此任务.NSScrollView的类似分页功能将是一个完美的解决方案.
有谁知道如何解决这个问题?
非常感谢你!
ios ×5
android ×4
objective-c ×3
xcode ×3
iphone ×2
app-store ×1
certificate ×1
cocoa-touch ×1
google-play ×1
iphone-x ×1
listview ×1
macos ×1
nsscrollview ×1
watchkit ×1