2017-01-14 4 views
1

私は新しいアプリケーションの開発に悩まされています。誰かが私を助けて問題を解決できることを願っていました。私は非常に喜んで;)プロトコルを準拠させる関数から自己を返すUNUserNotificationCenterDelegate

現在、私はUNUserNotifictionCenterによってトリガーされている通知オブジェクトのアラートを表示しようとしています。あなたがアプリを離れるとトリガーが起動されたときに警告が表示されていますが、アプリで作業しているときにアラートをトリガーすると何も起こりません。これを行うには、通知オブジェクトのアラートを表示できるUNUserNotificationCenterDelegateを採用する必要があります。私が立ち往生した場所があります。

UNUserNotificationCenterDelegate継承'self'()呼び出された関数は、その関数の実装を必要とNSObjectProtocolは、またタイプselfであるべき値を返す形成します。

func `self`() -> Self { 
    var delegate = type(of: self) 
    //delegate = type(of: self).self 
    return delegate 
} 

とスレッドのスタイルで他のオプション、::動作するように両方のオプションの継ぎ目の

func `self`() -> Self { 
    var delegate = NSObject().value(forKey: Thread().name!) as! Self 
    return delegate 
} 

なしこれを返すように

は、私は2つのオプションが試してみた自己を要求しました。だから私はこれに援助を与えることができれば非常に感謝しています。

挨拶Javed

答えて

1

私はあなたがより良い継承クラスあなたはNSObjectNSObjectProtocolを実装することが知られているように、この

class MyUserNotificationCenterDelegate : NSObject, UNUserNotificationCenterDelegate { 

    // implementation 
} 

ようNSObjectからUNUserNotificationCenterDelegateになりたいと思います。

希望すると助かります!

+0

クラスのインスタンスがNSObjectであり、UNUserNotificationCenterDelegateではないので、コンパイラはエラーを出します。とにかくありがとう;) –

+0

あなたはすでにそれを試しましたか、それともエラーが起こると思いますか? – Sander

0

あなたのAppDelegateは、アプリケーションがフォアグラウンドになっているときに通知を表示するには、UNUserNotificationCenterDelegateプロトコルに準拠する必要があります。

単にあなたのAppDelegate定義に次の行を追加します。

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate { 

さて、あなたはAppDelegateに以下の機能を追加する必要があります。このプロトコルに確認している

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

     completionHandler([.sound,.alert,.badge]) 
} 

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 
    //do whatever you want to here 
    completionHandler() 
} 

は、この情報がお役に立てば幸いです。 :)

+0

私はそれに着くとすぐにこれを試してみます。私は現在、私のMacBookにいくつか問題があります。あなたの解決策がうまくいくことを願ってください;)皆さんにお伝えします。 –

関連する問題