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はありませんが、パブリックメソッドのみを使用する回避策があります。
各カレンダーにはcolorプロパティがあります:ekCalendar.CGColor
Facebookのイベントカレンダーの色はFacebookBlueであるため、カレンダーの色の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
}
于 2015-02-07T10:01:47.990 に答える