鉴于任何EKCalendar
,如何查看此日历是否为Facebook日历? Facebook日历可以是Facebook活动日历或Facebook生日日历。
答案 0 :(得分:8)
不幸的是,如果不使用私有API,就无法判断特定日历是否为Facebook日历 我在iOS 6的测试期间提交了一份错误报告,一位Apple工程师告诉我他们会在最终版本中修复它,但事实证明他们没有......
但是,您可以测试特定事件是否为facebook事件:
BOOL isFacebookEvent = [[event.URL host] hasSuffix:@"facebook.com"];
但不可以用于facebook生日活动!
答案 1 :(得分:1)
EventKit中仍然没有公共API,但是只有公共方法才有解决方法。
每个日历都有一个颜色属性:ekCalendar.CGColor
Facebook活动日历的颜色为Facebook Blue,因此通过比较日历颜色的rbg组件,可以确定日历最有可能来自Facebook。
我写了一个快速扩展到UIColor来检查给定颜色是否为Facebook Blue(完成辅助函数以使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
}