iOSでアプリケーションを起動する方法:スケジュールされた、あまりない

プッシュ通知は、ユーザーとやり取りし、関与させ、アプリケーションに戻るための良い方法です(時間外通知から少なくとも夜に一度起きていない人はいますか?)。 ただし、プッシーには、誰もが知っているわけではない別の興味深い機能があります。



ユーザーに愛されているメッセンジャーがバックグラウンドに行き、そこで「眠りに落ちる」と想像してください。 サーバーに接続せずに通話を受信するにはどうすればよいですか? 答えは正確にプッシュにあります-メッセージがアプリケーションを「起動」し、アクティブモードになり、すでに電話を受けることができます。



iOSでは、アプリケーションを起動して、何が起きているかを制御する方法がいくつかあります。



UILocalNotification-将来の特定のポイントに関連付けられた保留中の通知があります。 いつ電話を受けるかわからないため、 UILocalNotificationを使用して電話会議を開催することはできません。



UIBackgroudnModesで説明されているBackground Fetchがあります。 また、時間に関連付けられており、適切なタイミングでデータをダウンロードおよび更新するためにアプリケーションを起動できます。 コールの正確な時間を指定できないため、バックグラウンドウェイクアップはコールでも機能しません。



リモート通知でアプリケーションを起動できます。 プロジェクトを実行している場合、この機能はXcodeプロジェクトの[機能]タブで有効になります。[バックグラウンドモード]セクションと[リモート通知]オプションがあります( Info.plistの "remote-notification"値でUIBackgroundModesキーを有効にすることもできます ) 。







通知自体では、キーコンテンツを値1で使用可能にする必要があります。



{ "aps" : { "content-available" : 1 }, "content-id" : 42 }
      
      





その場合にのみ、アプリケーションは起動(または起動)し、 アプリケーションを呼び出します:didReceiveRemoteNotification:fetchCompletionHandler method 。 その中に必要な機能を既に実装できます。



 - (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { NSLog(@"Remote Notification userInfo is %@", userInfo); NSNumber *contentID = userInfo[@"content-id"]; // Do something with the content ID completionHandler(UIBackgroundFetchResultNewData); }
      
      





このハンドラーでは、必要なコンテンツをダウンロードし、サーバーに接続して、たとえば呼び出しを確認できます(プッシュを使用する場合は、e-Legionの記事「Notifications in iOS 10」をお勧めします。これにより、問題がより詳細に対処されます)。



AppleのVoIPアプリケーションでは、 UIBackgroundModesからすぐに起動することをお勧めしますが、もちろん、時間ではなく、着信トラフィックを聞くことで起動することをお勧めします。 バックグラウンドのメッセンジャーは特定のソケットを監視し、トラフィックがそこに現れると、必要な手順を開始するハンドラーを呼び出します。



iOS用のVoximplant Pushは、VoIPバージョンに基づいています。 動作するために必要なもの:



1.アプリケーションの起動時に通知をサブスクライブします。



 PKPushRegistry *voipRegistry = [[PKPushRegistry alloc] initWithQueue:dispatch_get_main_queue()]; voipRegistry.delegate = self; voipRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP];
      
      





2.着信メッセージを処理し、着信トークンをSDKに転送します。



 - (void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(PKPushType)type { // 'self.sdk' is an instance of the 'VoxImplantSDK' [self.sdk registerPushNotificationsToken:credentials.token]; }
      
      





3.プッシュを受信した後、アプリケーションがVoximplantクラウドに接続されていない場合、再接続して着信コールを受信する必要があります。



 - (void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(PKPushType)type { NSDictionary* custom = [[payload.dictionaryPayload objectForKey:@"aps"] objectForKey:@"voximplant"]; if (custom) { // This call notifies Voximplant cloud that notification is successfully received. [self.sdk handlePushNotification:payload.dictionaryPayload]; } }
      
      





プシは、アプリケーションとのリモート通信の強力な手段であり、見知らぬ人が彼の農場を略奪したというユーザー情報を表示するだけの手段ではありません。 これは、バックグラウンドで情報を受信し、通話時にアプリケーションを「オン」にし、ユーザーデータを更新する機能です。 最終的に、これはすべて、便利な作業とアプリケーションへのユーザーの関与の手段です。



キャット前のイラスト: www.davidrevoy.com



All Articles