鉴于 any EKCalendar
,我如何检查此日历是否为 Facebook 日历?Facebook 日历可以是 Facebook 活动日历或 Facebook 生日日历。
问问题
1095 次
2 回答
8
不幸的是,如果不使用私有 API,就无法判断特定日历是否为 facebook 日历。
我在 iOS 6 测试版期间提交了一份错误报告,一位 Apple 工程师告诉我他们会在最终版本中修复它,但事实证明他们没有……
但是,您可以测试特定事件是否是 facebook 事件:
BOOL isFacebookEvent = [[event.URL host] hasSuffix:@"facebook.com"];
不过,这不适用于Facebook 生日活动!
于 2013-02-02T11:19:45.530 回答
1
EventKit 中仍然没有用于此的公共 API,但有一个仅使用公共方法的解决方法。
每个日历都有一个颜色属性:ekCalendar.CGColor
Facebook 活动日历的颜色是 Facebook Blue,因此通过比较日历颜色的 rbg 组件,可以确定日历最有可能来自 Facebook。
我写了一个 UIColor 的快速扩展来检查给定的颜色是否是 Facebook 蓝色(完成了帮助函数,使 UIColor rgb 函数更迅速)
extension UIColor {
struct rgbComponents {
var red : CGFloat
var green : CGFloat
var blue : CGFloat
var alpha : CGFloat
}
func toComponents()->rgbComponents {
var r:CGFloat = 0
var g:CGFloat = 0
var b:CGFloat = 0
var a:CGFloat = 0
var components : rgbComponents
if self.getRed(&r, green: &g, blue: &b, alpha: &a) {
components = rgbComponents(red: r, green: g, blue: b, alpha: a)
} else {
components = rgbComponents(red: 0, green: 0, blue: 0, alpha: 0)
}
return components
}
func isFBBlue()->Bool {
let c = self.toComponents()
let result = c.red == 0.18823529779911041
&& c.green == 0.39215686917304993
&& c.blue == 0.7137255072593689
&& c.alpha == 1.0
return result
}
于 2015-02-07T10:01:47.990 回答