iOS 원 격 푸 시 원리 및 과정 실현
우선 iOS 푸 시 알림 의 기본 원 리 를 말씀 드 리 겠 습 니 다.
애플 의 푸 시 서비스 알림 은 자신의 전문 푸 시 서버 APNs(Apple Push Notification service)로 이 루어 집 니 다.그 과정 은 APNs 가 자신의 애플 리 케 이 션 서버 에서 보 낸 푸 시 메 시 지 를 받 아 지정 한 iOS 장치 에 보 낸 다음 iOS 장치 에서 애플 리 케 이 션 에 알 립 니 다.우 리 는 통지 나 소리의 형식 으로 추 송 된 소식 을 받 을 것 이다.iOS 원 격 푸 시 전 제 는 애플 리 케 이 션 이 설 치 된 iOS 장치 가 APNs 서버 에 등록 해 야 한 다 는 것 입 니 다.등록 에 성공 하면 APNs 서버 는 devicetoken 을 되 돌려 줍 니 다.이 token 을 가 져 오 면 이 token 을 우리 에 게 보 냅 니 다.우리 가 메 시 지 를 전송 해 야 할 때,우리 의 응용 서버 는 메 시 지 를 지정 한 형식 으로 포장 한 다음,iOS 장치 의 devicetoken 과 결합 하여 APNs 서버 에 보 냅 니 다.Google 애플 리 케 이 션 은 APNs 서버 와 TCP 기반 의 긴 연결 을 유지 합 니 다.APNs 서버 는 새로운 메 시 지 를 iOS 장치 에 전송 한 다음 장치 화면 에 푸 시 메 시 지 를 표시 합 니 다.
장치 등록 APNs 의 흐름 도:
위의 그림 은 다음 과 같은 절 차 를 완성 했다.
1.Device(장치)는 APNs 서버 에 연결 하고 장치 시리 얼 번호(UUID)를 휴대 합 니 다.
2.연결 에 성공 하면 APNs 는 패키지 와 처 리 를 통 해 devicetoken 을 만 들 고 등 록 된 Device(장치)에 되 돌려 줍 니 다.
3.Device(장치)가 가 져 온 devicetoken 을 가지 고 우리 자신의 응용 서버 에 보 냅 니 다.
4.추 송 될 Device(장치)가 APNs 서버 와 저희 애플 리 케 이 션 서버 에 등록 되 었 습 니 다.
푸 시 프로 세 스 맵:
푸 시 과정 은 다음 과 같은 절 차 를 거 칩 니 다.
1.우선,우리 의 장 치 는 푸 시 기능 을 가 진 응용 프로그램(응용 프로그램 은 코드 로 메 시 지 를 등록 하여 추진 해 야 합 니 다)을 설 치 했 습 니 다.우리 의 iOS 장 치 는 네트워크 가 있 는 상황 에서 APNs 푸 시 서버 에 연결 합 니 다.연결 과정 에서 APNS 서버 는 devicetoken 을 검증 하고 연결 이 성공 한 후에 TCP 기반 의 긴 연결 을 유지 합 니 다.
2.Provider(우리 자신의 응용 서버)는 푸 시 되 어야 할 메 시 지 를 받 고 푸 시 되 는 iOS 장치 의 devicetoken 과 결합 하여 APNS 서버 에 포장 하여 보 냅 니 다.
3.APNS 서버 는 지정 한 devicetoken 의 iOS 장치 에 정 보 를 전송 합 니 다.
4.iOS 장치 가 푸 시 메 시 지 를 받 은 후 프로그램 에 알 리 고 사용자 에 게 알려 줍 니 다(소리,팝 업 상자)
비교적 직관 적 인 흐름 도:
패키지 구성 도:
위의 그림 에 표 시 된 이 메시지 체 는 애플 리 케 이 션 서버(Provider)가 APNs 서버 에 보 낸 메시지 구조 입 니 다.APNs 는 이 구조 가 정확 하 다 는 것 을 검증 하고 정 보 를 추출 한 후 지정 한 iOS 장치 로 메 시 지 를 보 냅 니 다.이 구조 체 는 다섯 부분 을 포함한다.첫 번 째 부분 은 명령 표시 자 이 고 두 번 째 부분 은 우리 의 devicetoken 길이 이 며 세 번 째 부분 은 우리 의 devicetoken 문자열 이다.네 번 째 부분 은 푸 시 메시지 체(Payload)의 길이 이 고 마지막 부분 은 바로 진정한 메시지 내용 이다.그 안에 푸 시 메시지 의 기본 정보,예 를 들 어 메시지 내용 등 이 포함 되 어 있다.Icon 오른쪽 상단 에 몇 개의 숫자 와 푸 시 메시지 가 도 착 했 을 때 재생 되 는 소리 등 을 표시 합 니 다.
Payload(메시지 체)의 구조:
{
“aps”:{
“alert”:“ ”,
“badge”:1,
“sound”:“default”
},
}
이것 은 바로 JSON 구조 체 입 니 다.alert 라벨 의 내용 은 바로 사용자 의 핸드폰 에 표 시 된 푸 시 메 시 지 를 표시 하 는 것 입 니 다.badge 가 표시 하 는 수량(전체 형 주의)은 Icon 오른쪽 상단 에 표 시 된 수량 입 니 다.읽 지 않 은 메시지 가 몇 개 있 는 지 알려 주 는 등 sound 는 푸 시 메 시 지 를 핸드폰 에서 재생 하 는 소리 로 전달 하고 defalut 를 전달 하면 시스템 의 기본 소 리 를 표시 합 니 다.다음은 우리 가 알림 에 필요 한 인증 서 를 푸 시 하 는 과정 입 니 다.
1.우선 Certificate Signing Request(즉 CSR)요청 파일 을 새로 만 듭 니 다.
응용 프로그램 에서 사용 하 는 도구 에서 열쇠 열 쇠 를 찾 아 접근 하고 인증서 발급 기관 에서 인증 서 를 요청 하 는 것 을 선택 하 십시오.
메모:메 일 주소,개발 자 계 정,상용 이름,아무 거나 적어 서 기억 하면 됩 니 다.그리고 디스크 에 저장 할 것 을 선택 하 십시오.계속 하면 돼.
저장 위 치 는 tingyun(자신의 폴 더 를 지정 합 니 다.여 기 는 제 폴 더 를 선택 합 니 다)에 있 습 니 다.저장 소 를 클릭 하 십시오.
그리고 완 료 를 클릭 하면 tingyun 에서 Certificate Signing Request.cert Signing Request 의 요청 파일,즉 우리 가 말 한 CSR 파일 을 볼 수 있 습 니 다.CSR 파일 을 만 드 는 동시에 열쇠 열 에 접근 하여 비밀 키 를 만 듭 니 다.이름 은 방금 우리 가 작성 한 상용 이름 입 니 다.
2.AppID 설정
애플 개발 자 사이트 방문https://developer.apple.com
계 정 클릭
인증서,identifiers&Profiles 선택
Identifiers->App IDs 를 선택 하고 위의+번 호 를 누 르 면 App ID 를 만 듭 니 다.
Name:App 이름 을 쓰 면 됩 니 다.
App ID Suffix 어댑터 없 는 및 Explicit App ID 선택
Bundle ID:자신 이 사용 하 는 Bundle ID 를 작성 하려 면 반드시 자신 이 사용 하 는 것 과 일치 해 야 합 니 다.
아래 App Services 에서 원 하 는 서 비 스 를 선택 하 십시오.
푸 시 서비스 가 필요 해서 Push Notifications 에 체크 를 했 습 니 다.
그리고 contine 을 누 르 세 요.
3.인증서 만 들 기
인증 서 는 두 가 지 를 만들어 야 합 니 다.하 나 는 개발 한 것 이 고 하 나 는 발표 한 것 이 며 개발 한 것 은 테스트 용 입 니 다.
Development 오른쪽 상단 의+번 호 를 누 르 고 인증 서 를 만 듭 니 다.먼저 개발 인증 서 를 만 듭 니 다.
Apple Push Notification service SSL(Sandbox)을 선택 하고 푸 시 서비스 인증 서 를 만 들 려 면 다음 단 계 를 누 르 십시오.
여기 App ID 는 저희 가 방금 만 든 App ID 를 선택 하 세 요.
그리고 다음 단 계 를 클릭 하고 다음 단 계 를 클릭 하 세 요.
여기에서 Choose File 을 누 르 고 우리 가 방금 만 든 CSR 파일 을 선택 하 십시오.
그리고 클릭 하여 생 성(Generate)
마지막 으로 다운 로드 를 클릭 하여 인증 서 를 다운로드 합 니 다.다운로드 한 인증 서 를 지정 한 위치 에 놓 습 니 다.
인증서 생 성 은 개발 인증서 와 마찬가지 로 Production->Apple Push Notification service SSL(Production)을 선택 하면 개발 인증서 와 같 습 니 다.
4.장치 추가:
먼저 어떤 장 치 를 추가 할 지 선택 한 다음 왼쪽 상단 에'+'번 호 를 누 르 십시오.
Name 장치 이름 을 입력 하 십시오.
UDID 는 자신 이 테스트 에 가입 해 야 할 장 비 를 기입 한 UDID 입 니 다.
그리고 다음 단 계 를 누 르 세 요.
그리고 Register 를 누 르 시 면 됩 니 다.
Done 을 클릭 합 니 다.
5.장치 의 UDID 찾기:
자신의 iOS 장비 로 컴퓨터 에 연결 하여 iTunes 를 엽 니 다.
장치 요약 에서 시리 얼 번 호 를 볼 수 있 고 시리 얼 번 호 를 누 르 면 UDID 가 됩 니 다.
6.프로필 생 성
프로필 도 두 가지 가 있 습 니 다.하 나 는 개발 한 것 입 니 다.하 나 는 발표 한 것 입 니 다.개발 한 것 은 테스트 를 하 는 데 필요 한 것 입 니 다.발표 한 것 은 우리 가 Appstore 에서 발표 할 때 필요 한 것 입 니 다.우 리 는 모두 생 성 해 야 합 니 다.
우리 남편 은 프로필 을 개발 하고 provisioning Profiles->Development 을 선택 하여 오른쪽 상단 의+번 호 를 클릭 합 니 다.
iOS App Development 선택 다음 클릭
여기 App ID 는 저희 가 방금 만 든 App ID 를 선택 하 세 요.
여기 서 개발 자의 인증 서 를 선택 하 십시오.어느 것 이 모든 것 을 선택 하 는 지 모 르 면 됩 니 다.
여기 서 테스트 장 치 를 선택 하 십시오.없 으 면 앞의 Devices 에 추가 하면 됩 니 다.
마음대로 이름 을 지 으 면 됩 니 다.그리고 다운로드 하 세 요.
프로필 을 발표 하 는 것 은 개발 프로필 과 같이 만 듭 니 다.Distribution->Ad Hoc 를 선택 하면 됩 니 다.다음은 프로필 을 발표 하 는 것 과 같 습 니 다.
인증서 설정 이 완료 되 었 습 니 다.만 든 프로그램 을 엽 니 다.
AppDelegate.m 파일 을 열 고-(BOOL)application:(UIApplication*)application didFinishLaunching WithOptions:(NSDictionary*)launchOptions 방법 에 다음 코드 를 추가 하고 메 시 지 를 전송 합 니 다.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
/** */
if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
[application registerUserNotificationSettings:settings];
[application registerForRemoteNotifications];
}else {
[application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}
return YES;
}
ANPs
/** token */
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
// DeviceToken !
// deviceToken ,
NSString *token = [deviceToken description];
NSLog(@"description %@", token);
}
,
/** , */
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
NSLog(@"userInfo == %@",userInfo);
}
,
/** */
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
NSLog(@" %@",error);
}
서버 쪽(Java 서버)서버 쪽 에 서 는'p12'라 는 접미사 와 필요 한 jar 패키지 가 필요 합 니 다.
서버 쪽 인증서 생 성 방식:
앞에서 다운로드 한 인증 서 를 열 고 열쇠 꾸러미 에서 찾 습 니 다.
마우스 우 클릭 으로 내 보 내기 선택
접 두 사 를.p12 로 내 보 낸 파일 을 자신의 컴퓨터 에 저장 하려 면 비밀 번 호 를 입력 해 야 합 니 다.자바 서버 에서 사용 해 야 합 니 다.
자바 서버 에 필요 한 Jar 패키지
Java 서버 엔 드 코드:
import javapns.back.PushNotificationManager;
import javapns.back.SSLConnectionHelper;
import javapns.data.Device;
import javapns.data.PayLoad;
public class pushService {
public static void main(String[] args) {
try {
String deviceToken = "eab6df47eb4f81e0aaa93bb208cffd7dc3884fd346ea0743fcf93288018cfcb6";
// iphone
PayLoad payLoad = new PayLoad();
payLoad.addAlert(" push ");
payLoad.addBadge(1);
payLoad.addSound("default");
PushNotificationManager pushManager = PushNotificationManager.getInstance();
pushManager.addDevice("iphone", deviceToken);
// :gateway.sandbox.push.apple.com /2195
// :gateway.push.apple.com / 2195
String host="gateway.sandbox.push.apple.com"; //
int port = 2195;
String certificatePath = "/Users/hsw/Desktop/PushTest/PushTest.p12"; // mac
String certificatePassword= "123456";
pushManager.initializeConnection(host, port, certificatePath,certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
//Send Push
Device client = pushManager.getDevice("iphone");
pushManager.sendNotification(client, payLoad); //
pushManager.stopConnection();
pushManager.removeDevice("iphone");
}
catch (Exception e) {
e.printStackTrace();
System.out.println("push faild!");
return;
}
System.out.println("push succeed!");
}
}
본 고 는 이미《iOS 푸 시 튜 토리 얼》으로 정리 되 었 으 니,여러분 의 읽 기 학습 을 환영 합 니 다.이상 은 완전한 iOS 원 격 푸 시 원리 와 실현 과정 이 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.