UIActivityType
は、アクティビティタイプの文字列表現のための型安全な薄いラッパーです。あらかじめ定義された定数を持たないアクティビティタイプがいくつか見つかった場合は、独自の拡張を定義することができます。
internal func _shouldExcludeActivityType(_ activity: UIActivity) -> Bool {
let activityTypesToExclude: [UIActivityType] = [
.remindersEditorExtension,
.openInIBooks,
.print,
.assignToContact,
.postToWeibo,
.googleDriveShareExtension,
.streamShareService
]
if let actType = activity.activityType {
if activityTypesToExclude.contains(actType) {
return true
} else if let superExcludes = super.excludedActivityTypes {
return superExcludes.contains(actType)
}
}
return false
}
あなたが直接スウィフト3コードで生の文字列表現を使用しないでください:上記の拡張子を持つ
extension UIActivityType {
static let remindersEditorExtension = UIActivityType(rawValue: "com.apple.reminders.RemindersEditorExtension")
static let googleDriveShareExtension = UIActivityType(rawValue: "com.google.Drive.ShareExtension")
static let streamShareService = UIActivityType(rawValue: "com.apple.mobileslideshow.StreamShareService")
}
は、あなたがこのような何かを書くことができます。
だから約なぜですか?:この変更により、プログラマーはactivityType識別子が必要な場所で、non-activityType文字列を誤って挿入する可能性がはるかに低くなります。
一部の文字列定数にも同様の変更が加えられました。たとえば、Notification.Name
です。
この機能の使い方は混乱しています。私は '' 'activityViewController.excludedActivityTypes = [UIActivityType.streamShareService]' 'を試してみました。 '' '_shouldExcludeActivityType'''関数をどのように使って' '' com.apple.mobileslideshow.StreamShareService'''を除外できるか説明してください。 – breaktop
まず、[this thread](http:// stackoverflow .com/q/31792506/6541007)。 (すでにチェックしたことがありますが、再度慎重にチェックしたことがあります)。受け入れられた回答に書かれているように、 '_shouldExcludeActivityType'はプライベートAPIであり、このAPIを使用するアプリケーションはアップルによって拒否されています。 Appleはいつでも、通知なしでいくつかの詳細な実装を変更するでしょう。あなた自身のリスクでそれらを試すことができますが、私は実際に何がうまくいくのかわからないので、 "それを使う方法"を説明することはできません。上記の答えは、 'UIActivityType'のインスタンスを作成する方法を説明することです。 – OOPer