所以这是我们UICollectionViewFlowLayout在iOS 10上发现的一个有趣的问题(仍然是11的问题)并UICollectionViewFlowLayoutAutomaticSize用于estimateItemSize.
我们发现使用UICollectionViewFlowLayoutAutomaticSizeestimatedItemSize导致页脚补充视图浮动在底部的几个单元格之上.(红色/粉红色是标题,绿色是页脚.)
以下是示例应用的VC代码:
import UIKit
class ViewController: UIViewController {
// MARK: Properties
let texts: [String] = [
"This is some text",
"This is some more text",
"This is even more text"
]
// MARK: Outlets
@IBOutlet var collectionView: UICollectionView! {
didSet {
self.collectionView.backgroundColor = .orange
}
}
// MARK: Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
// Layout
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
if #available(iOS 10.0, *) {
layout.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
} …Run Code Online (Sandbox Code Playgroud) 我一直在与此争斗一段时间,但我终于屈服于提交一个问题,看看是否有其他人有问题.
基本上我正在尝试使用Facebook Analytics推送服务,似乎只是在某些时候接收推送通知.我一直在使用charles代理拦截API调用,以确保Facebook SDK正确发送推送令牌,并按预期记录事件.从这个角度看,一切都很好.
接下来,我使用设置页面上的"推送广告系列设置验证"来尝试发送推送和应用内推送测试,这些也可以在3个测试设备上正常工作(卡片在设备上正确显示等)我是使用.
在尝试创建将推送发送到设备的某个部分的广告系列时,问题就出现了.我试过的第一台设备完全没有问题,但随后的设备(根本没有对代码库进行任何更改)将不会从我设置的任何广告系列中获得任何推送.我的目标受众是"设备操作系统是iOS",因此我希望所有iOS设备都能从广告系列中获得推动.这似乎有点奇怪,所以我删除了所有设备上的应用程序并重新重建它们(确保测试推送适用于所有设备)并再次设置广告系列,但这次甚至第一台设备也不再有效.在事件调试器中,我得到一个'推送通知错误'和'InvalidDeviceOS'的error_message,这根本没有意义.
我已经回来了第四次,现在几个小时没有成功.我可以看到令牌被发送到Facebook,我可以看到事件调试器中记录的事件,我可以在设置中使用推送测试服务,所有设备都可以毫无问题地接收推送,但是一旦我尝试使用我一无所获.
为了完成目的,这里是我正在使用的代码片段:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// ...
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil))
// ...
}
func application(application: UIApplication, didRegisterUserNotificationSettings settings: UIUserNotificationSettings) {
UIApplication.sharedApplication().registerForRemoteNotifications()
}
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
FBSDKAppEvents.setPushNotificationsDeviceToken(deviceToken)
}
Run Code Online (Sandbox Code Playgroud)
最后,这是在3个不同的设备上打开全新安装后的事件调试器(请参阅第一个启动事件,2个应用程序启动有ID,1个没有,因为它还没有登录).
对此有任何帮助都很棒,谢谢.
更新:我创建了一个全新的应用程序和一个全新的Facebook分析实例,新的推送证书等.最初我开始接受广告系列推送,但一旦我删除并重新安装该应用程序,广告系列消息就开始再次失败.然后我将其安装到另一台设备上并克隆现有的广告系列并再次尝试.这导致原始设备获得推动但新设备没有......令人难以置信!
现在我不知道最近发生了什么.从表面上看,一旦APNS发出推送错误,Facebook服务似乎变得不稳定,但由于事件调试器中的错误报告几乎无用,因此很难证明这一假设.
再次为了完整性,这里是来自新应用程序的代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
application.registerUserNotificationSettings(UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil))
return true
}
func applicationDidBecomeActive(_ application: …Run Code Online (Sandbox Code Playgroud)