APNs をクライアントにプッシュする独自の C# プログラムを作成できることは確かです (実際、私は多くのアプリでそれを自分で行いました)。理解しておく必要があるのは、APN のアーキテクチャには 2 つの重要な事実があるということです。
- APN はベスト エフォート型であるため、毎回アクセスできる保証はありません。
- APN は、クライアントに到達するときに多くの情報を保持できません (ビット数には制限があります。Apple のドキュメントを参照してください)。
これらの事実により、クライアントへの実際の情報の送信を処理し、データがクライアントにも到達したことを確認する独自のサーバー アプリケーション (C# の場合もあります) が必要になる場合があります。言うまでもなく、このサーバー アプリケーションは実際のサーバー上で実行する必要があります。おそらくこの事実が原因で、一部の開発者はサードパーティのソリューションを探し始めていますが、個人的にはサードパーティを使用したくないので、すべて自分で行います.
独自のサーバー アプリケーションを用意する以外に、受信したニュースを保存して後で表示するために、iPhone アプリにはある種のデータベース (おそらく SQLite3) が必要です。
編集:以下のコメントでの質問への回答:
最初の質問「なぜiPhoneアプリにsql dbが必要なのか」について。実際、上記の回答で述べたように、それは必須ではありません。データベースが必要かどうかは、アプリ自体の性質によって異なります。たとえば、テキストや画像をクライアントにプッシュしている場合、そのようなデータを APN のペイロードに収めることができません。別の可能性として、ユーザーが APN メッセージを破棄した場合でも、送信された通知を失わないようにしたい場合があります。後でアプリを開いたときに再度表示したい場合があります。サーバーかどうか。
2番目の質問「サードパーティ経由で通知を送信する必要はないとおっしゃいました」については、私の回答で明確にさせてください。Apple 開発者として、私は Apple サーバーをサードパーティとは考えていません。別の言い方をすれば、実際の APN は Apple サーバー経由でのみ送信され、この事実を変更することはできません (変更したくもありません)。そのため、最終的には実際の APN が Apple サーバーに送信され、Apple サーバーはそれを実際のクライアントに配信する作業を行います。私がサードパーティと見なすのは、独自のサーバーを持っている人で、あなたが望むメッセージを彼に送信すると、彼はそれを Apple サーバーに送信します。その場合、あなたと Appl APN サーバーの間に誰かがいて、これを私は第三者と呼んでいます。C# コードは Apple APN サーバーに直接接続し、クライアントにメッセージを送信するように依頼できるため、このサード パーティを回避できます。私の要点を明確にしたことを願っています。