
プッシュ通知は、ユーザーとやり取りし、関与させ、アプリケーションに戻るための良い方法です(時間外通知から少なくとも夜に一度起きていない人はいますか?)。 ただし、プッシーには、誰もが知っているわけではない別の興味深い機能があります。
ユーザーに愛されているメッセンジャーがバックグラウンドに行き、そこで「眠りに落ちる」と想像してください。 サーバーに接続せずに通話を受信するにはどうすればよいですか? 答えは正確にプッシュにあります-メッセージがアプリケーションを「起動」し、アクティブモードになり、すでに電話を受けることができます。
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"];
このハンドラーでは、必要なコンテンツをダウンロードし、サーバーに接続して、たとえば呼び出しを確認できます(プッシュを使用する場合は、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