Swiftでメソッドの実装をiOSバージョンごとに分ける・無くす方法


お世話になります。

iOS10と9に対応したいアプリの通知処理を作っています。  
iOS9ではフォアグラウンドのとき通知が表示されないので通知の受信を

[code]

    application(_ application: UIApplication, didReceive notification: UILocalNotification)
    
[/code]

を使って制御してバックグラウンドと同じような通知を表示しようとしています。  
しかしこれは **Deprecated** なメソッドだそうでiOS9のみで実装するようにしたいです。

[code]

    @available(iOS 10.0より古い, *)
    
[/code]

といった感じの指定がしたいのですがそういった事はできるのでしょうか？

* * *

修正  
現状はメソッドの中でバージョンを判定して処理を分けるようにしました。

[code]

    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
    
[/code]

を実装している状態でiOS9ではフォアグラウンドで通知が来た時とバックグラウンドで通知表示を押して戻った時、  
iOS10ではフォアグラウンド、バックグラウンド時の通知表示をタップした時、

[code]

    func application(_ application: UIApplication, didReceive notification: UILocalNotification)
    
[/code]

が呼ばれ、これはiOS9でしか使う予定がないのでこの下のメソッドをiOS10より前でのみこの内容で実装するということは出来ないでしょうか？




こんな指定ができます。

[code]

    @available(iOS, deprecated: 10.0)
    func application(_ application: UIApplication, didReceive notification: UILocalNotification) {
        //...
    }
    
[/code]

他のプラットフォーム(tvOS, macOS等)もサポートする必要があれば、同様の複数のアトリビュートを重ねることもできます。

`@available`アトリビュートの使い方については、こちらに記載されているのですが、実例が少ないのでちょっとわかりにくいかもしれません。

[Declaration
Attributes](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Attributes.html#//apple_ref/doc/uid/TP40014097-CH35-ID348)
([The Swift Programming Language (Swift
3.1)](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097))




`UIDevice`クラスを使います。

[code]

    UIDevice.current.systemVersion
    
[/code]

返り値は、数値でなく、文字列（`String`）なのに注意してください。

