2015-01-15 4 views
0

내 애플리케이션은 푸시 알림에서 256 바이트 미만을 쉽게 수신하지만 iOS 8에서는 푸시 알림에서 2K 페이로드를 수신 할 수 있습니다. 수신 할 수 없습니다. 내가 테스트를 위해 아이폰 OS 8.1과 아이폰 5S를 사용하고푸시 알림을받지 못함 256 바이트를 초과했습니다. iOS 8

{"aps":{"alert":"ASD SAD SA DAS DSDSADSAD E36DCB20B9497BB75BE6BF0C47718C73E8D80A6B734F296BD768DC5C4DB261BCE36DCB20B9497BB75BE6BF0C47718C73E8D80Assdds","id":"5","type":"n","sound":"default","category":"1"}} 

: 내가 Asp.net를 사용하고 다음하고 서버 측에서

내 페이로드입니다.

는 아이폰 OS 측면에서 나는 아이폰 OS 8 원격 알림 등록에 약간의 변화가있을 것을 확인하십시오 아래의 코드

UIApplication *application = [UIApplication sharedApplication]; 
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) 
{ 
    UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert | 
                UIUserNotificationTypeBadge | 
                UIUserNotificationTypeSound); 
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil]; 
    [application registerUserNotificationSettings:settings]; 
    [application registerForRemoteNotifications]; 
} 
else 
{ 
    // Register for Push Notifications before iOS 8 
    [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | 
                UIRemoteNotificationTypeAlert | 
                UIRemoteNotificationTypeSound)]; 
} 
+0

어떻게 푸시를 보냅니 까? 아마도 보내는 서버가 미리 8 제한 인 것처럼 푸시를 256 바이트로 제한하고 있습니다. – Paulw11

+0

보내는 서버 제한 설정에 대해 확실하지 않지만 256보다 작거나 256보다 크고 원활하게 보낼 페이로드를 만들었지 만 기기에서 256보다 크게 수신되지 않습니다. –

+0

서버에 페이로드를 256으로 트림하는 코드가있을 수 있습니다 (또는 자동 폐기 함 - 기기에서 수신 중인지 잘 모르겠습니다). – Paulw11

답변

0

을 사용하고 있습니다.

예 :

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 
{ 
    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; 
    [[UIApplication sharedApplication] registerForRemoteNotifications]; 
} 
else 
{ 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
    (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; 
} 

이 방법을 사용하거나하지 여부를 확인하시기 바랍니다.

+0

예 Nishant가 해답을 주셔서 감사하지만 위의 코드를 사용하여 질문을 업데이트 할 것입니다. –

1

iOS 8.3을 실행하는 iPhone과 동일한 문제가있었습니다. 최대 256 바이트의 페이로드 데이터 만 수신 할 수있었습니다.

문제를 일으키는 원인은 내가 알림을 푸는 데 사용한 PHP 스크립트 (인터넷에서 발견하고 작성하지 않은 것)가 버그가 있다는 것입니다. 페이로드 데이터의 길이를 저장할 때 1 바이트 만 사용하므로 최대 크기는 255보다 클 수 없습니다. raywanderlich의 APNS에 대한 튜토리얼 (iOS 6 용으로 작성)에서 나온 간단한 푸시 스크립트를 사용했다고 생각합니다.

작동하지 않음 : . chr (0). chr (32). pack ('H *', $ deviceToken [$ i]). chr (0). chr (strlen ($ payload)). $ payload;

위대한 작품 : . 팩 ('n', 32). pack ('H *', $ deviceToken [$ i]). pack ('n', strlen ($ payload)). $ payload;

그래서 내 경우 엔 $ payload에 379 자의 데이터가 포함되어 있는데, strlen은 379를 반환하지만 1 바이트에 저장하므로 결과가 약 256 개가되고 123 (379-256)이됩니다. 내 스크립트는 APNS에 페이로드를 보내지 만 메시지 길이가 실제 콘텐츠와 일치하지 않으면 APNS가 장치로 푸시하지 않는 것처럼 보입니다.

그래서 페이로드 길이를 계산하고 메시지에 저장하는 방법을 확인하십시오.

행운/조끼

관련 문제