2016-11-14 4 views
2

ビーコン機能を含むiOSフレームワーク(Swift内)に取り組んでいます。私はフォアグラウンドにいるシナリオをどのように処理するのかが分からず、短時間で複数のビーコンに遭遇するということを除いて、それを動作させました。ビーコンを使用したiOSフレームワークのローカル通知の管理

フォアグラウンドでビーコンの警告を表示するには、didReceiveの代理方法を使用してください。多くのビーコンに遭遇した場合、うまく動作しません(アラートが重なって表示されます)。何らかの理由で通知をキューに入れる方法はありますか?

また、フレームワーク内でローカル通知を受け取るためのすべてのロジックを作成する方法があるかどうかを知りたいと思いますか? 私はiOSの-8.0をサポートできるようにする必要がありますので、私はiOSの-10.0

から利用可能である通知センターを使用することはできません私はフレームワーク内UIApplicationDelegateを実装しappdelegateのように作用するであろういくつかのクラス(おそらくいくつかのクラスを作成することができます)、それは可能なものですか?

フレームワーク内にできるだけ多くのコードを入れて、誰かがそのフレームワークをすべての機能に組み込むのが面倒な仕事ではないようにします。

答えて

1

しばらくして、私はこれを作る方法を考え出した。私は数ヶ月の経験でiOSで初心者ですので、このソリューションが最高だとは言えませんが、それは私にとってはうまくいきます。

フレームワークからすべてのプッシュおよびローカル通知関連のデリゲートメソッドを実装する方法が見つかりました。基本的にメインアプリケーションがフレームワークに自分で何も実装せずに通知を処理したい場合は、ランタイムフレームワークでAppDelegate.swiftクラス(またはAppDelegateクラスが呼び出されたもの)のUIApplicationDelegateメソッドを動的に実装します。

メインクラスを取得するためにobject_getClass(UIApplication.shared.delegate!)を使用しました。

は、それから私は、FUNCをclass_addMethod使用(:AnyClass!、_名:_ CLSセレクタを!、_ IMP:IMP!_タイプ:UnsafePointer!) - >ブール は、フレームワークの内部からプッシュし、ローカル通知のためのデリゲートメソッドを実装します今ではフレームワークの外にたくさんのコードを記述するのではなく、ワーキング通知とビーコンの位置情報サービスを使ってフレームワークを完全に使用するために、1行か2行を書くようになっています。

フォアグラウンドモードで通知を処理するのは、キューに追加することでその作業を行いました。複数の通知が表示され、フォアグラウンドで表示したい場合、UIAlertControllerによって1つだけが表示され、残りは待ち行列に入れて再送したが、少し遅れて(私は自分のケースでは適切だと思った値になるように火事日を設定した)、唯一提示された最初の通知に関してユーザーが行動を起こした。

これらは私が持っていた問題の単なるアイデアです。誰かがこれらのソリューションに興味を示したら、必要に応じて詳細を書きます。私は喜んで批判も受け入れます。

関連する問題