2012-01-25 8 views
11

最も一般的に使用される戦略は何ですか?私は、次の実装に今しようとしている :iOSプッシュ通知 - 端末IDの処理方法

アプリケーションの起動には:

  • 変更した場合は、送信、新しいIDを保存するデバイスID
  • を取得し、いくつかのローカルストレージ
  • から以前に保存したデバイスIDを取得しますサーバーへの更新

このアプローチは正しいですか? デバイスIDをローカルに保存する最も良い方法は何ですか?様々なハードウェアの詳細に基づいて、各機器に固有の

答えて

5

ベストプラクティスは、アプリが起動するたびにプッシュデバイストークン(Serg Shiyanが指摘したuniqueIdentifierと同じではない)をAppleに送信することをお勧めします。これはあなたのアプリがまだアクティブであることをAppleに知らせます。

は、リモートプッシュ通知の登録を参照してください:

デバイストークンを要求し、プロバイダにアプリケーションが起動するたびにそれを渡すことで、プロバイダは、デバイスの現在のトークンがあることを確認するのに役立ちます。

私の経験でLocal and Push notifications Programming guide

からのプッシュトークンは無効とされる可能性があります理由はいくつかあります。これらのアプリケーションには、さまざまな証明書(dev、アドホックがサンドボックス/ライブプッシュサーバーに対して実行されている)を使用してアプリケーションをアンインストールしたり、ミックスしたりすることが含まれます。これは、推奨されるたびにトークンを毎回送信することによって、デバッグを省くことができます。

したがって、基本的には、アプリケーションの実行中にプッシュトークンをメモリ以外に保存する必要はありません。次回のアプリ起動時に新しいアプリケーション(おそらく同じもの)を要求するだけです。

+0

ありがとうございます。唯一のことは、ユーザー/デバイスを識別するためにサーバーに渡すためにまだトークンが必要であり、何とかデバイスに保管する必要があることです。私はユーザーのデフォルトで推測します。 –

+0

はい、ユーザーを特定することは、おそらくキーチェーン、ユーザーの既定値、またはiCloudに格納されている別のメカニズム(デバイストークン、ユーザーアカウントなど)を使用して最適に行われます。この方法では、複数のデバイスでアプリを使用している場合、同じユーザーが複数のプッシュトークンを登録している状況もあります。 –

3

は」英数字の文字列。(読み取り専用)(のiOS 5.0で推奨されていません。その代わりに、あなたのアプリケーションに固有の一意の識別子を作成します。)

@property (nonatomic, readonly, retain) NSString *uniqueIdentifier 

特別な考慮事項 uniqueIdentifierプロパティを使用しないでください。アプリケーション固有の一意の識別子を作成するには、CFUUIDCreate関数を呼び出してUUIDを作成し、NSUserDefaultsクラスを使用してdefaultsデータベースに書き込みます。 (Apple Inc)

関連する問題