2017-09-27 5 views
0

今日は、アプリケーションがまったく実行されていなくても、コード欄のようにdidDetermineStateを使用してモバイルが地域に入ると、ローカル通知を開始できます。アプリケーションを開く方法didDetermineStateメソッド

if (state == CLRegionState.inside){ 

     let date = Date() 
     let calendar = Calendar.current 
     let hour = calendar.component(.hour, from: date) 
     let minutes = calendar.component(.minute, from: date) 


       let content = UNMutableNotificationContent() 
       content.title = "Sonda" 
       content.subtitle = "Entrada" 
       content.body = "Hora: " + String(hour) + ":" + String(minutes) 
       content.badge = 1 
       content.sound = .default() 
       let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 2, repeats: false) 
       let requestIdentifier = "reqIdentifier" 
       let request = UNNotificationRequest(identifier: requestIdentifier, content: content, trigger: trigger) 
       UNUserNotificationCenter.current().add(request, withCompletionHandler: {error in 
        //handle error 
       }).... 

ユーザーの操作なしで同じ方法でアプリを起動することはできますか?事前に

おかげで、

フィリペ

+0

打ち上げの意味は?画面上のアプリを開くか、コードを実行するのと同じですか? – matiastofteby

+0

私はビーコンを起動し、バックエンドにいくつかのデータを書き込むためにアプリを開く必要があります。アクティビティの監視 –

+0

これは、レンジングを開始するためにアプリを開く必要があるようには聞こえません。バックグラウンドでBLEデバイスを動作させる機能があれば、それを行うことができます。 – matiastofteby

答えて

0

申し訳ありませんが、ない、あなたがプログラムでフォアグラウンドにiOS版を起動することはできません。 iOSの設計では、これを禁止しています。これは、ユーザーがアプリケーションをフォアグラウンドに向けるように常にジェスチャーする必要があるためです。一番近いのは、あなたが行ったようにローカル通知を送信することです。ローカル通知をタップすることは、必要なユーザージェスチャーを取得するための最もシンプルで使いやすい方法です。

+0

アプリを終了したい場合はどうすればいいですか?それも禁止されていますか? exit(0)を使用するとアプリストアに更新できないと言うスレッドがあります。 –

+0

iOSフレームワークはプログラム的にアプリケーションを閉じる必要がないように設計されています。オペレーティングシステムは、メモリが不足しているときにアプリケーションを終了します。このデザインにはいくつかの欠点がありますが、それについて何もできないため、戦う価値はありません。最善の方法は、アプリケーションの実行が終了したらリソースやスレッドの割り当てを解除し、ランチャーアイコンや通知をタップしてフォアグラウンドに戻す場合に再作成できるようにすることです。 – davidgyoung

関連する問題