PHP에서 iOS 푸시를 구현하는 방법
php에서 ios 푸시를 구현하는 방법: 먼저 보낼 메시지와 iPhone 로고를 패키지하여 APNS로 보낸 다음 해당 로고가 있는 iPhone을 찾아 메시지를 iPhone으로 보냅니다. 해당 애플리케이션에 대한 설정에 따라 푸시 알림이 팝업됩니다.
추천: "php 동영상 튜토리얼"
IOS 푸시 메시지는 많은 IOS 애플리케이션에 있는 기능입니다. 최근에 많은 정보를 참고하다가 마침내 알게 되었습니다. 꺼내서 공유하는 단계는 다음과 같습니다.
iOS 메시지 푸시의 작동 메커니즘은 다음 그림으로 간단하게 요약할 수 있습니다.
제공자는 특정 iPhone 소프트웨어이며 APNS는 Apple Push 알림 서비스입니다. Apple Server의 약어입니다.
위 그림은 세 단계로 나눌 수 있습니다.
1단계: 애플리케이션이 보낼 메시지와 대상 iPhone의 식별 정보를 패키지하여 APNS로 보냅니다.
2단계: APNS는 푸시 서비스에 등록된 자체 아이폰 목록에서 해당 ID를 가진 아이폰을 검색하여 아이폰으로 메시지를 보냅니다.
세 번째 단계: iPhone은 보낸 메시지를 해당 애플리케이션에 전달하고 설정에 따라 푸시 알림을 팝업으로 표시합니다.
위 그림에서 볼 수 있는 내용은 다음과 같습니다.
1. 지원서 등록 메시지 푸시.
2. iOS는 APNS 서버에서 장치 토큰을 얻고, 애플리케이션은 장치 토큰을 받습니다.
3. 애플리케이션은 PUSH 서버 프로그램에 장치 토큰을 보냅니다.
4. 서버 프로그램이 APNS 서비스에 메시지를 보냅니다.
5. APNS 서비스는 iPhone 애플리케이션에 메시지를 보냅니다.
iPhone 클라이언트와 APNS, 공급자와 APNS 모두 인증서를 통해 연결해야 합니다.
이제 사용되는 여러 인증서를 소개하겠습니다.
1. CSR 파일
1. 인증서 서명 요청(CSR) 생성
2. 이메일과 일반 이름을 입력하고 하드 드라이브에 저장하도록 선택하세요.
계속하려면 클릭하세요.
이렇게 하면 로컬에서 Push.certSigningRequest 파일이 생성됩니다.
2.p12 파일
1.
2. 비밀번호를 입력하세요.
그러면 Push.p12 파일이 생성됩니다.
3. SSL 인증서 파일
1. 유료 계정으로 iOS 프로비저닝 포털에 로그인하고 새 앱 ID를 생성하세요. iOS 애플리케이션의 실제 머신 디버깅을 참조하세요. 기록 :
2. 오른쪽의 구성을 클릭합니다:
3. 개발 푸시 SSL 인증서 줄 다음에 구성을 클릭합니다:
지금까지
1, Push.certSigningRequest
2, Push.p12
3, aps_developer_identity.cer
aps_developer_dientity.cer을 두 번 클릭하여 키체인에 등록했습니다. 2. 프로필 인증서를 준비하세요. 푸시 메시지는 실제 컴퓨터에서만 테스트할 수 있으므로 프로필 인증서를 만들어야 합니다.
이것을 xcode에 추가하기 전에 한 가지 주의할 점이 있습니다. , 먼저 추가해야 합니다. 삭제하세요. 2개 이상이면 오류가 발생합니다.
3. 프로젝트 코드
이제 인증서가 준비되었습니다. 다음으로 xcode에서 새 테스트 프로젝트를 생성합니다. 프로젝트의 번들 식별자는 위에서 빌드한 APP ID와 동일해야 합니다.
didFinishLaunchingWithOptions에 코드를 추가하세요
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self.window makeKeyAndVisible];
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];
return YES;
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pToken {
NSLog(@"regisger success:%@", pToken);
//注册成功,将deviceToken保存到应用服务器数据库中
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
// 处理推送消息
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"通知" message:@"我的信息" delegate:selfcancelButtonTitle:@"取消" otherButtonTitles:nil, nil];
[alert show];
[alert release];
NSLog(@"%@", userInfo);
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"Regist fail%@",error);
}
My을 얻을 수 있습니다. 토큰은 다음과 같습니다.
넷째, php를 사용하여 메시지를 APNS에 푸시합니다.
1. PHP에도 APNS에 연결하려면 인증서가 필요합니다. 위에서 얻은 것 인증서가 몇 개 있나요? 터미널을 열고 다음과 같이 위 인증서를 처리합니다.
cd 인증서가 있는 디렉터리를 입력합니다.
.cer 파일을 .pem 파일로 변환:
$ openssl x509 -in aps_developer_identity.cer -inform der -out PushChatCert.pem
개인 키 변환 Push .p12 파일을 pem 파일로:
$ openssl pkcs12 -nocerts -out PushChatKey.pem -in Push.p12 Enter Import Password: MAC verified OK Enter PEM pass phrase: Verifying – Enter PEM pass phrase:
你首先需要为.p12文件输入passphrase密码短语,这样OpenSSL可以读它。然后你需要键入一个新的密码短语来加密PEM文件。还是使用”pushchat”来作为PEM的密码短语。你需要选择一些更安全的密码短语。
注意:如果你没有键入一个PEM passphrase,OpenSSL将不会返回一个错误信息,但是产生的.pem文件里面将不会含有私钥。
最后。把私钥和证书整合到一个.pem文件里:
$ cat PushChatCert.pem PushChatKey.pem > ck.pem
为了测试证书是否工作,执行下面的命令:
$ telnet gateway.sandbox.push.apple.com 2195 Trying 17.172.232.226… Connected to gateway.sandbox.push-apple.com.akadns.net. Escape character is ‘^]’.
它将尝试发送一个规则的,不加密的连接到APNS服务。如果你看到上面的反馈,那说明你的MAC能够到达APNS。按下Ctrl+C 关闭连接。如果得到一个错误信息,那么你需要确保你的防火墙允许2195端口。
然后再次连接,这次用我们的SSL证书和私钥来设置一个安全的连接:
$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushChatCert.pem -key PushChatKey.pem Enter pass phrase for PushChatKey.pem:
你会看到一个完整的输出,让你明白OpenSSL在后台做什么。如果连接是成功的,你可以键入一些字符。当你按下回车后,服务就会断开连接。如果在建立连接时有问题,OpenSSL将会给你一个错误消息
ck.pem文件就是我们需要得到php连接APNS 的文件,将ck.pem和push.php放入同一目录上传到服务器,push.php的代码如下:
<?php // 这里是我们上面得到的deviceToken,直接复制过来(记得去掉空格) $deviceToken = '740f4707bebcf74f 9b7c25d4 8e3358945f6aa01da5ddb387462c7eaf 61bb78ad'; // Put your private key's passphrase here: $passphrase = 'abc123456'; // Put your alert message here: $message = 'My first push test!'; $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); // Open a connection to the APNS server //这个为正是的发布地址 //$fp = stream_socket_client(“ssl://gateway.push.apple.com:2195“, $err, $errstr, 60, //STREAM_CLIENT_CONNECT, $ctx); //这个是沙盒测试地址,发布到appstore后记得修改哦 $fp = stream_socket_client( 'ssl://gateway.sandbox.push.apple.com:2195', $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; // Create the payload body $body['aps'] = array( 'alert' => $message, 'sound' => 'default' ); // Encode the payload as JSON $payload = json_encode($body); // Build the binary notification $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; // Send it to the server $result = fwrite($fp, $msg, strlen($msg)); if (!$result) echo 'Message not delivered' . PHP_EOL; else echo 'Message successfully delivered' . PHP_EOL; // Close the connection to the server fclose($fp); ?>
接下来我们访问http://localhost/push/push.php
iphone就会接收到一条推送消息了,如果有问题的话就检查上面的操作步骤,特别是加红的部分
另外去除标记的方法为,在viewDidApper中加入
int badge = [UIApplication sharedApplication].applicationIconBadgeNumber; if(badge > 0) { badge--; [UIApplication sharedApplication].applicationIconBadgeNumber = badge; }
위 내용은 PHP에서 iOS 푸시를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.
