web-dev-qa-db-ja.com

iPhoneでプッシュ通知を受信しない

このチュートリアル を使用して、プッシュ通知用のサンプルPushTestアプリを作成しました。

そして、上記のチュートリアルを使用して、「PushTest」がプッシュ通知を送信したいというメッセージを(一度だけ)受け取った後、iPhoneからアプリを削除し、iPhoneを再起動しますが、同じメッセージを再度取得することはできません。

スクリプトsample.phpを実行し(提案された変更を更新)、「APNSに接続」および「メッセージ送信」というメッセージが表示されました。

しかし、単一のプッシュ通知を受信しませんでした。

私が間違っている場所を教えてください?
またはプッシュ通知の受信を試みた理由。

21
Idiot

2つの場合にのみプッシュを受信しません

1.)アプリケーションがフォアグラウンドにある場合。

2.)プッシュ通知を受信するためのデバイストークンが無効です。プッシュをまだ受信していない場合は、両方の条件を確認してください。ありがとう

30
Divyam shukla

プッシュ通知対応のプロビジョニングプロファイルを使用していることを確認してください。次に、トークンをサーバーに送信しているかどうかを確認します。

6
Saqib Saud

同じチュートリアルに従っています。

アプリが通知センターにリストされていることを確認してください。アラートタイプは何でもないが、どれでもないことを確認してください。

3つの条件で通知を確認する必要があります。

アプリが開いているとき、バックグラウンドで、閉じているとき。

そのためには、これらのメソッドをチェックインする必要があります

// To Register your device token
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken

//If your app is not able to register
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{}

//Your app receives Push notification.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{

    UIApplicationState state = [application applicationState];

    // If your app is running
    if (state == UIApplicationStateActive)
    {

        //You need to customize your alert by yourself for this situation. For ex,
        NSString *cancelTitle = @"Close";
        NSString *showTitle = @"Get Photos";
        NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"];
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@""
                                                            message:message
                                                           delegate:self
                                                  cancelButtonTitle:cancelTitle
                                                  otherButtonTitles:showTitle, nil];
        [alertView show];
        [alertView release];

    }
    // If your app was in in active state
    else if (state == UIApplicationStateInactive)
    {
    }
}
2
Baby Groot

デバイスの設定でアプリケーションの通知がオンになっているかどうかを確認し、通知センターで通知のタイプが「なし」でないことを確認してください。

1
Yogi

必ず、適切なプロビジョニングプロファイルを選択してください provision profile

アプリが最小化されていること。アプリの使用が最小化されていない場合

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    NSLog(@"info %@", userInfo);
}

その他 有用な情報 問題について。

テストプッシュの場合は、 APN Tester Free を使用できます。 注意:トークンにスペースを挿入します。

1
Nik Kov

私は何も得ていませんでした:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any])

しかし、私のコンパイラは

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)