Apple의 Push Notification Service (APN) 문제로 인해 StackOverflow 전체에 약간의 홍수가 발생했기 때문에 실제로 질문을하기 전에 많은 연구를했습니다.Apple Push Notification이 전달되지 않았습니다.
기본적으로 apns-php's CertificateCreation을, on mobiforge과 같은 튜토리얼을, 그리고 일부는 Matthijs Hollemans을 따라갔습니다. 그래도, 내가 어떤 통지가 내 아이 패드 2
에 게시 얻을 수 기본적으로이 내가 수행 한 단계는 다음과 같습니다
- 가 나는 CertificateCreation 튜토리얼을 따라 나는
server_certificates_bundle_sandbox.pem
,entrust_root_certification_authority.pem
나왔다. mobiforge blog에 지정된 지침서를 따라 가면서 App ID, 프로비저닝 프로파일을 성공적으로 생성하고 잘 연결했습니다.
는- 설명 : APNTest는
- 는 번들 시드 ID : 를 사용하여 팀 ID는
- 번들 식별자 : com.learn.APN는는
는 그럼 난 개발 푸시 SSL을 사용하도록 설정 동일한 인증서 요청을 사용하는 인증서 (당분간) 인증서를 얻으려고 지금 막 사용했고 다운로드하여 키 체인에 설치합니다. .
내 프로비저닝 프로파일을
.mobileprovision
파일에 다운로드하고 iPad 2 장치 아래 Xcode 's Organizer에로드했습니다.다음 나는 단지 이러한 코드와 간단한 응용 프로그램을 만드는 :
- 대상> 정보> 식별자를 구축 : net.learn.APN를
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; // Override point for customization after application launch. return YES; } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSLog(@"%@", deviceToken); } - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { NSLog(@"Error: %@", error); }
그럼 내가 빌드 매개 변수를 구성
- 대상> 빌드 설정> 코드 서명 ID> (필자는 지금 설치 한 프로비저닝 프로파일을 선택하고 자동으로 ide를 선택합니다
: 내 디버그 및 릴리스) I 구축하고 내 아이 패드 2 푸시 알림과 나는 그것을 승인 후 요청 내 응용 프로그램에 응용 프로그램을 실행2012-01-19 12:43:26.345 TestAPN[578:707] <3cb08612 9392996b 5332d2fc 5adce03d 994f8959 d7a2ac38 de7bed52 c8e0778e>
- 대상> 정보> 식별자를 구축 : net.learn.APN를
에 대한 ntical 프로파일, 토큰 ID는 내 콘솔에 등장
apns-php을 사용하고 기기 ID (원시 64 진수 값)를 변경 한 다음
sample_push.php
을 실행합니다. 스크립트가 성공적으로 실행되었지만 장치에 알림이 수신되지 않습니다.그런 다음 SimplePush.php을 사용하려고합니다."메시지가 성공적으로 전달되었습니다"라는 메시지가 나타 났지만 내 iPad는 여전히 APN으로부터 알림을받지 못합니다.
질문 : 어떤 단계를 잘못 수행 했습니까? 저는이 분야에서 꽤 초보자입니다. 그리고 실제로 서버가 우리 자신의 어플리케이션에 메시지를 보내야한다는 것이 제 프로젝트의 요구 사항입니다. 우리는 귀하를 대신하여 APN을 보내는 제 3 자 소프트웨어에 대해 알고 있습니다.하지만 우리는 스스로를 구현하고 싶습니다.
나는 또한 "APN Feedback Service"을 보았고 이것을 (SimplePush의 기본) 쓰지 만 슬프지만 비어 있습니다. 지금 어떻게해야합니까?
<?php
// Put your private key's passphrase here:
$passphrase = '';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'server_certificates_bundle_sandbox.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://feedback.sandbox.push.apple.com:2196', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo 'Connected to APNS' . PHP_EOL;
while (!feof($fp)) {
$data = fgets($fp, 1024);
var_dump(unpack("N1timestamp/n1length/H*devtoken", $data));
}
// Close the connection to the server
fclose($fp);
주
- 내가 개발/생산 인증서에서의 차이점을 알고 있습니다.
- 아이 패드는, 사자 10.7.2 내가 중 하나를 복제하고 있지 않다 희망
을 실행하는 아이폰 OS 5.0.1
편집
내가 php simplepush.php
다음 php feedback.php
실행, 나는 레크 리 에이션 내 장치 ID로 피드백을 받았습니다. 내 앱이 여전히 iPad에 있기 때문에 내 장치 ID가 잘못되었음을 의미합니까?
[[email protected] SimplePush]# php feedback.php
Connected to APNS
array(3) {
["timestamp"]=>
int(1326962028)
["length"]=>
int(32)
["devtoken"]=>
string(64) "3cb086129392996b5332d2fc5adce03d994f8959d7a2ac38de7bed52c8e0778e"
}
감사
편집
많은 어려움을 겪고과 Matthijs Hollemans에 의해 작성된 모든 단계를 다시 실행 후, 나는 마침내 작업을 진행. 그래서 문제는 잘못된 PEM 파일 내에 생성됩니다 ... hmm
모든 것을 재설정하고 모든 단계를 다시 시작하십시오 @ http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12 이제 푸시 알림이 작동합니다 ... hmm –
푸시 알림 서비스는 지난 며칠 동안 문제가 발생했습니다. Apple은 프로비저닝 프로파일을 재생성하라는 이메일을 보냈습니다. 너는 그걸로 잡혔을지도 모른다. –
감사합니다.raywenderlich.com의 모든 단계를 자세히 수행하여 문제를 해결했습니다. 나는 이것이 cert 문제와 관련이 있다고 생각합니다. 어쨌든, 나는 내 문제를 해결했다. 내 답변을 게시해야합니까? (기본적으로 페이지와 동일합니다.) –