アプリにプッシュ通知を実装しています。すべて問題ないように見えますが、プッシュ通知がデバイスで受信されません。
上記のURLから通知を送信すると、応答がありました。
「APNSに接続しました メッセージが正常に配信されました」.
しかし、その後、私のデバイスには通知がありません。これを解決する方法を教えてください。
アプリにプッシュ通知を実装しています。すべて問題ないように見えますが、プッシュ通知がデバイスで受信されません。
上記のURLから通知を送信すると、応答がありました。
「APNSに接続しました メッセージが正常に配信されました」.
しかし、その後、私のデバイスには通知がありません。これを解決する方法を教えてください。
間違ったデバイス トークンを書き込んでいたため、同じエラーが発生しました デバイス トークンを確認してください @" < 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 アプリに渡します
1 つの簡単なトリック: 私は同じ問題を抱えていました。アプリが数か月以上機能する前。
結局、助けになったのは、実際に電話からそれを消去して再インストールすることでした. 保存されているデータの一部が何らかの理由で破損しているようです...
その後、アプリは新しいトークンで登録されることに注意してください。
以下を確認してください
プッシュトークンを取得していますか。はいの場合は、プッシュ トークンからスペースと <, > を削除します。
デバイスがインターネットに接続されているかどうかを確認する
[設定] -> [通知] -> [アプリケーション] -> [バナーまたはアラート (ポップアップ) を選択] で、通知 (バナーまたはポップアップ) が有効になっているかどうかを確認します。
ほとんどの場合、これのいずれかが問題になります。
最初に、プッシュ通知の性質を説明するペイロードを確認してください。これは、それがテキスト メッセージであるか、アラートであるか、アプリ アイコンのバッジであるかを意味します。したがって、 JSON の形式で適切に設定する必要があります。最初にそれをチェックアウト、
それで
Ray Wenderlich フォーラムによるこの素晴らしいチュートリアルを読んでください。
http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12