1

アプリにプッシュ通知を実装しています。すべて問題ないように見えますが、プッシュ通知がデバイスで受信されません。

上記のURLから通知を送信すると、応答がありました。

「APNSに接続しました メッセージが正常に配信されました」.

しかし、その後、私のデバイスには通知がありません。これを解決する方法を教えてください。

4

4 に答える 4

0

間違ったデバイス トークンを書き込んでいたため、同じエラーが発生しました デバイス トークンを確認してください @" < XXx XXXX xxx..> " を @"XXX XXX.." に変更するか、手順に従ってください

アプリ内デリゲート

起動中

// Register for sound and alert push notifications.
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

    // Check if the app was launched in response to the user tapping on a
    // push notification. If so, we add the new message to the data model.
    if (launchOptions != nil)
    {
        NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        if (dictionary != nil)
        {
            NSLog(@"Launched from push notification: %@", dictionary);
        //  [self addMessageFromRemoteNotification:dictionary updateUI:NO];
        }
    }


#pragma mark -
#pragma mark Apple Push notifications

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
    // We have received a new device token. This method is usually called right
    // away after you've registered for push notifications, but there are no
    // guarantees. It could take up to a few seconds and you should take this
    // into consideration when you design your app. In our case, the user could
    // send a "join" request to the server before we have received the device
    // token. In that case, we silently send an "update" request to the server
    // API once we receive the token.

    NSString* oldToken = [self deviceToken];

    NSString* newToken = [deviceToken description];
    newToken = [newToken stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    newToken = [newToken stringByReplacingOccurrencesOfString:@" " withString:@""];

    NSLog(@"My token is: %@", newToken);

    [self setDeviceToken:newToken];

    // If the token changed and we already sent the "join" request, we should
    // let the server know about the new device token.
//  if ([dataModel joinedChat] && ![newToken isEqualToString:oldToken])
//  {
//      [self postUpdateRequest];
//  }
}

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
    // If we get here, the app could not obtain a device token. In that case,
    // the user can still send messages to the server but the app will not
    // receive any push notifications when other users send messages to the
    // same chat room.

    NSLog(@"Failed to get token, error: %@", error);
}

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
    // This method is invoked when the app is running and a push notification
    // is received. If the app was suspended in the background, it is woken up
    // and this method is invoked as well. We add the new message to the data
    // model and add it to the ChatViewController's table view.

    NSLog(@"Received APNS notification: %@", userInfo);
    [self log:[NSString stringWithFormat:@"Received APNS notification: %@", userInfo]];

    UIAlertView* nofity = [[ UIAlertView alloc]initWithTitle:@"APNS" message:@"Test Successfull" delegate:nil
cancelButtonTitle:@"ok" otherButtonTitles: nil];
    [nofity show];

//  [self addMessageFromRemoteNotification:userInfo updateUI:YES];
}



- (NSString*)deviceToken
{
    return [[NSUserDefaults standardUserDefaults] stringForKey:@"DeviceTokenKey"];
}

- (void)setDeviceToken:(NSString*)token
{
    [[NSUserDefaults standardUserDefaults] setObject:token forKey:@"DeviceTokenKey"];
}

- (NSString*)udid
{
    UIDevice* device = [UIDevice currentDevice];
    return [device.uniqueIdentifier stringByReplacingOccurrencesOfString:@"-" withString:@""];
}

上記のコードからデバイス トークンを取得します。

テスト デバイス トークンをPush me baby アプリに渡します

于 2012-12-07T12:38:35.547 に答える
0

1 つの簡単なトリック: 私は同じ問題を抱えていました。アプリが数か月以上機能する前。

結局、助けになったのは、実際に電話からそれを消去して再インストールすることでした. 保存されているデータの一部が何らかの理由で破損しているようです...

その後、アプリは新しいトークンで登録されることに注意してください。

于 2016-06-26T20:48:53.933 に答える
0

以下を確認してください

  1. プッシュトークンを取得していますか。はいの場合は、プッシュ トークンからスペースと <, > を削除します。

  2. デバイスがインターネットに接続されているかどうかを確認する

  3. [設定] -> [通知] -> [アプリケーション] -> [バナーまたはアラート (ポップアップ) を選択] で、通知 (バナーまたはポップアップ) が有効になっているかどうかを確認します。

ほとんどの場合、これのいずれかが問題になります。

于 2012-12-08T13:23:09.017 に答える
0

最初に、プッシュ通知の性質を説明するペイロードを確認してください。これは、それがテキスト メッセージであるか、アラートであるか、アプリ アイコンのバッジであるかを意味します。したがって、 JSON の形式で適切に設定する必要があります。最初にそれをチェックアウト、

それで

Ray Wenderlich フォーラムによるこの素晴らしいチュートリアルを読んでください。

http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

于 2012-12-07T11:51:46.170 に答える