web-dev-qa-db-ja.com

iOSプッシュ通知-アラートなしでバッジを更新しますか?

アラートを表示したりアプリを開いたりせずにバッジの番号を更新する方法はありますか?

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

私はiOS5.0以降用に開発しています。

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

14
Ran Dahan

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

通知ペイロード

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

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

ユーザーに表示するアラートメッセージ

アプリケーションアイコンにバッジを付けるための番号

再生する音

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

例5.次の例は、空のapsディクショナリを示しています。バッジプロパティがないため、アプリケーションアイコンに表示されている現在のバッジ番号はすべて削除されます。 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);

}

すべての引用は、Appleローカルおよびプッシュ通知プログラミングガイドから取得されます。

25
Eran

アプリのバッジ番号をローカルで処理するには、applicationIconBadgeNumberを使用する必要があります

[UIApplication sharedApplication].applicationIconBadgeNumber = number_of_notifications;

リモート通知からバッジカウンターを追加する限り、アラートなしで行うことはできないと思います。 APNサービス について読む必要があります。UIRemoteNotificationTypeBadgeに登録する場合は、 ローカルおよびプッシュ通知プログラミングガイド について読む必要があります。

2
nsgulliver

あなたが使用することができます

[UIApplication sharedApplication].applicationIconBadgeNumber = aNumber;
1
Samet DEDE
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

{

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}

この方法を使用してください....これはあなたを助けます。

1
Hari1251