4

アプリケーションにニューススタンド機能を実装していますが、アプリはプッシュ通知を受け取りますが、バックグラウンド モードで起動しません。
通知アラートをタップすると、アプリが起動し、「content-available」が表示されます:1 が辞書に存在し、問題もダウンロードされますが、アプリは自動的に起動されません。

plistに追加しました:

<key>UIBackgroundModes</key>
<array>
    <string>newsstand-content</string>
</array>

そしてdidFinishLaunchingWithOptionsに:

[[NSUserDefaults standardUserDefaults]setBool: YES forKey:@"NKDontThrottleNewsstandContentNotifications"]; // for testing purposes
    [[NSUserDefaults standardUserDefaults] synchronize];

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

また、私のアプリが [設定] -> [ストア] -> [自動ダウンロード] の下に表示されていないこともわかります (他の雑誌がそこに表示されます)。

何か不足していますか?これはサンドボックス環境で動作するはずですか?

4

5 に答える 5

2

いくつかの説明

  1. content-available:1のみを含むNewsstandペイロードで「アラート」を送信しない場合、通知センターには何も追加されません。
  2. ニューススタンド通知起動アプリケーションは、アプリがフォアグラウンドになることを意味するわけではありません(ユーザーがアプリアイコンをタップした場合のように)。これは、アプリがバックグラウンドにない場合、iOSによってバックグラウンドで起動されることを意味します-> appDelegateのdidFinishLaunchingWithOptionsが呼び出され、アプリはニューススタンドキューにアセットを追加してダウンロードをスケジュールするニューススタンド通知であるかどうかを確認する必要があります。アセットパスはNSペイロードの一部にすることができます(ただし、ペイロード制限256バイト未満の場合)

NSDictionary *payload = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if(payload && [[payload objectForKey:kContentAvailablePush] caseInsensitiveCompare:@ "1"] == NSOrderedSame){NSLog(@ "NS通知のために起動"); }

于 2012-09-01T05:42:00.823 に答える
1

[設定] に表示され、「ニューススタンドの通知」を受け取るには、ニューススタンドの通知に登録する必要があります。登録するには、これを に追加しますapplication:didFinishLaunchingWithOptions:

// Add registration for newsstand notifications
// In your application:didFinishLaunchingWithOptions:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
  UIRemoteNotificationTypeNewsstandContentAvailability];

ユーザーは、バックグラウンド ダウンロードを受け入れるかどうかを尋ねられます。

ニューススタンド アプリに関する完全なチュートリアルをご覧ください: http://www.viggiosoft.com/blog/blog/2011/10/17/ios-newsstand-tutorial/

于 2013-01-25T09:03:21.080 に答える
0

UINewsstandApp=YESがplistに設定されていることを確認してください

于 2013-01-13T18:15:20.657 に答える
0

{"aps": {"badge": 1, "alert": "test","content-available":1}}これは正しいペイロードです。 {"aps": {"badge": 1, "alert": "test"},"content-available":1}これは間違ったペイロードです。

于 2013-03-02T17:58:33.693 に答える
-1

content-available がペイロードにある場合は、次のようになります。

  • アプリが中断されている場合、システムはそれをバックグラウンドにします
  • アプリがユーザーによって強制終了された場合、何も起こらず、アプリは Not Running のままになります

プッシュ通知にアラート メッセージを追加することで、基本的にアプリケーションを起動するには、ユーザー アクションが必要です。

ソース

http://samwize.com/2015/08/07/how-to-handle-remote-notification-with-background-mode-enabled/

ただし、これで問題は解決しません。回避策として、特定の時間間隔ごとにアプリケーションをウェイクアップするバックグラウンド フェッチを使用できます。

于 2015-12-09T09:53:38.700 に答える