2013-03-05 12 views
10

アラートを表示したりアプリを開くことなく、バッジの番号を更新する方法はありますか?iOSプッシュ通知 - 警告なしでバッジを更新しますか?

アイコンのバッジに現在の未読メッセージ数を表示するアプリを作成していますが、ユーザーにアラートを表示せずにアプリを作成したいと考えています。

iOS 5.0以降用に開発中です。

EDIT:アプリが実行されていないときに、より明確にするために、私はこれを行う方法を尋ねています。アラートを表示せずにサーバーが新しいバッジ番号をプッシュするようにします。これは可能ですか?

+0

AFAIKはOSによって完全に処理されます。アラートを表示したくない具体的な理由はありますか? – Anupdas

+0

アプリは非常に高い頻度でビルドされているので、ユーザーにバグを抱かせたくありません。あなたが言っていることによると、ユーザーが通知センターに行ってアラートを無効にした場合のみ、 –

+0

@ Pandu1251はあなたの最後の見解を理解していませんでした..あなたはどのような論理について話していますか? –

答えて

23

できます。 警告なしでプッシュ通知を送信することは可能です。 バッジ通知だけにアプリケーションを登録することもできます。その場合、プロバイダサーバーはアラートやサウンドを送信することさえできません。

通知ペイロード

各プッシュ通知は、それにペイロードを運びます。ペイロード は、 がクライアントアプリケーションにダウンロードされるのを待っているデータにアラートを表示する方法を指定します。 通知ペイロードに許可される最大サイズは256バイトです。 Apple Push Notification Service は、この制限を超える通知を拒否します。 通知の配信は「ベストエフォート」であり、保証されていないことに注意してください。

通知ごとに、プロバイダーはRFC 4627に厳密に準拠したJSON辞書オブジェクト を作成する必要があります。この辞書には、 キーapsで識別される別の辞書が含まれている必要があります。 APS辞書 は、次のアクションを指定する1つのまたは複数のプロパティが含まれています

ユーザー

を再生するサウンドとアプリケーションアイコンをバッジの番号を表示するアラートメッセージ

one or more of the propertiesということに注意してください。 alertプロパティはオプションです。空のaps辞書を使用して通知を送信することもできます(つまり、カスタムプロパティのみを送信する)。

実施例5。次の例は、空のAP辞書を示しています。 バッジプロパティがないため、アプリケーションアイコンの と表示されている現在のバッジ番号はすべて削除されます。 acme2カスタムプロパティは、 の2つの整数の配列です。ザ・のみ、ユーザーがプッシュ通知を許可するかどうかを彼女/それを彼に尋ねる警告が表示されます警告

{ 

    "aps" : { 

    }, 

    "acme2" : [ 5, 8 ] 

} 

。そのアラートは、インストール後に初めてアプリを起動したときにのみ表示されます。あなたは非アラート通知に登録(バッジとのみに聞こえる)この例では

Listing 2-3 Registering for remote notifications 

- (void)applicationDidFinishLaunching:(UIApplication *)app { 

    // other setup tasks here.... 

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; 

} 



// Delegation methods 

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken { 

    const void *devTokenBytes = [devToken bytes]; 

    self.registered = YES; 

    [self sendProviderDeviceToken:devTokenBytes]; // custom method 

} 



- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { 

    NSLog(@"Error in registration. Error: %@", err); 

} 

すべての引用は、アップル現地から採取し、ガイドをプログラミングプッシュ通知しています。

+0

エラン、私はフォローアップの質問があります。私のアプリがバックグラウンドモニタリングユーザの場所で実行されている場合、アプリが通知を受け取り、ユーザがアプリを知っているか開いていなくてもコードを実行できますか?私はプッシュ通知を受け取ると、サーバーにその場所を送信するアプリケーションをしたいと考えています... – Trj

+0

ペイロード内のバッジ番号でプッシュ通知を送信することは可能ですか?bcoz私はバッジの概念を使いたくありません。またはバッジ番号「0」に設定する必要があります。 – siva

+0

@sivaもちろん可能です。バッジパラメータはオプションです。 – Eran

1

あなたは、私はバッジカウンタを追加する限り、警告なしで行うことが可能であるとは思わないあなたは、ローカルアプリのバッジ番号

[UIApplication sharedApplication].applicationIconBadgeNumber = number_of_notifications; 

を処理するためのapplicationIconBadgeNumberを使用する必要があります

[UIApplication sharedApplication].applicationIconBadgeNumber = aNumber; 
+0

申し訳ありませんが私は明確ではなかった、私は、アプリが閉鎖されたときを意味します。私の編集を参照してください。 –

1

を使用することができますリモート通知から。あなたは、あなたがこれをuを助ける....この方法を使用についてLocal & Push Notification Programming guide

+0

申し訳ありませんが私は明確ではなかった、私は、アプリが閉鎖されたときを意味します。私の編集を参照してください。 –

+0

この場合、メソッドdidReceiveRemoteNotificationがあり、このメソッド内で何でもできます。 – nsgulliver

+0

ユーザーがアプリを実行していない状態でバッジを更新したいと考えています。 iOSの内蔵メールアプリのようなものです。 –

1
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 

{ 

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 
} 

をお読みくださいUIRemoteNotificationTypeBadgeに登録するかもしれないあなたの場合には、およそAPN Serviceをお読みください。

+0

私の編集/他の賞賛を参照してください... –

関連する問題