サイレントプッシュ通知を使用する必要があります。ペイロードでは、サーバーからさまざまな情報を得ることができます。午前9時にUILocalNotification
をスケジュールします。
サイレントプッシュ通知を使用している場合、アプリケーションはUILocalNotification
サウンドファイル(最大30秒)まで、バックグラウンド/終了状態で呼び出されます(このノートはフォアグランドではありません)。この30秒でAPI関連の作業。
通知センターにUILocalNotification
が表示されている場合、たとえば、「受け入れられたタスク」と「それ以降」の通知を持つ2つのボタンがあります。したがって、ボタンをタップしても、アプリがバックグラウンド/終了状態で起動されても、アプリを開いて特定のView Controllerにリダイレクトすることもできます。いずれの場合もAPI関連の作業を行うことができます。
あなたがNSUserDefault
であなたのUILocalNotification
オブジェクトを保つなら、あなたはまた、場合にはお使いのデバイスを再起動し、UILocalNotification
、さらにAPIの仕事は非常に重要ですが、didFinishLaunchingWithOption
でそれを取得することができます。
サイレントプッシュ通知のヘルプが必要な場合は、UILocalNotification
、didFinishLaunchingWithOption
など何かお知らせください。
紹介ノート
https://www.raywenderlich.com/123862/push-notifications-tutorial
https://www.sinch.com/tutorials/ios8-apps-and-pushkit/
https://developer.apple.com/reference/pushkit
ソースhttps://github.com/hasyapanchasara/PushKit_SilentPushNotification
のPu SHキットの実装コード
輸入のUIKit 輸入PushKit
クラスAppDelegate:UIResponder、UIApplicationDelegate、PKPushRegistryDelegate {
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let types: UIRemoteNotificationType = [.Alert, .Badge, .Sound]
application.registerForRemoteNotificationTypes(types)
self. PushKitRegistration()
return true
}
//MARK: - PushKitRegistration
func PushKitRegistration()
{
let mainQueue = dispatch_get_main_queue()
// Create a push registry object
if #available(iOS 8.0, *) {
let voipRegistry: PKPushRegistry = PKPushRegistry(queue: mainQueue)
// Set the registry's delegate to self
voipRegistry.delegate = self
// Set the push type to VoIP
voipRegistry.desiredPushTypes = [PKPushTypeVoIP]
} else {
// Fallback on earlier versions
}
}
@available(iOS 8.0, *)
func pushRegistry(registry: PKPushRegistry!, didUpdatePushCredentials credentials: PKPushCredentials!, forType type: String!) {
// Register VoIP push token (a property of PKPushCredentials) with server
let hexString : String = UnsafeBufferPointer<UInt8>(start: UnsafePointer(credentials.token.bytes),
count: credentials.token.length).map { String(format: "%02x", $0) }.joinWithSeparator("")
print(hexString)
}
@available(iOS 8.0, *)
func pushRegistry(registry: PKPushRegistry!, didReceiveIncomingPushWithPayload payload: PKPushPayload!, forType type: String!) {
// Process the received push
// From here you can schedule UILocalNotification
}
}
は幸せなコーディングを持っています。
AppDelegateで処理するサイレントローカル通知を使用することができます。 – Callam
短い答え。できません。 iOS上で特定の時刻に実行するようにアプリをスケジュールする方法はありません。 – Paulw11
@Callamだから、これは基本的にはUILocalNotificationをスケジュールしていますが、カテゴリーを割り当てたりメッセージを送信したりすることなく、「火災」するが、電話機に通知バナーは表示されません。もしそうなら、私はそれを 'didReceiveLocalNotification'で処理しますか? – Glenncito