애플 PUSH(APNS) 메커니즘 정보

8553 단어
Push의 원리:
Push의 작업 메커니즘은 간단하게 다음 그림으로 요약할 수 있다
그림에서 Provider는 어떤 아이폰 소프트웨어의 Push 서버를 가리킨다. 이 글은 내가 사용할 것이다.net은 Provider입니다.APNS는 Apple Push Notification Service(Apple Push 서버)의 약자로 애플의 서버입니다.
위의 그림은 세 단계로 나눌 수 있다.
1단계:.net 응용 프로그램은 보낼 메시지, 목적 아이폰의 표지를 포장하여 APNS에 보냅니다.2단계: APNS는 자신의 Push 서비스에 등록된 아이폰 목록에서 해당하는 표지가 있는 아이폰을 찾아 아이폰에 메시지를 보낸다.3단계: 아이폰은 보내는 메시지를 해당하는 프로그램에 전달하고 설정에 따라 Push 알림을 팝업합니다.
 
위의 그림에서 우리는 볼 수 있다.
1. 먼저 응용 프로그램 등록 메시지 전송입니다.
2. IOS 및 APNS Server는 deviceToken을 사용합니다.응용 프로그램이 deviceToken을 수락합니다.
3. 응용 프로그램은 PUSH 서버 프로그램에 deviceToken을 보냅니다.
4. 서버 프로그램이 APNS 서비스에 메시지를 보냅니다.
5. APNS 서비스는 iPhone 애플리케이션에 메시지를 보냅니다.
아이폰 클라이언트와 APNS든 Provider와 APNS든 인증서를 통해 연결해야 합니다.다음은 제가 몇 가지 사용한 증서를 소개하겠습니다.
몇 가지 인증서:
하나, *.certSigningRequest 파일
1. CSR(Certificate Signing Request) 생성:
2. 메일박스와 Common Name을 입력하고 PushChat으로 작성합니다.하드 드라이브에 저장을 선택합니다.
이렇게 하면 로컬에서 PushChat이 생성됩니다.certSigningRequest 파일
2. 생성*.p12 파일
1. 키를 내보내고 비밀번호를 입력하십시오.
비밀번호 입력:
이렇게 하면 PushChatKey가 생성됩니다.p12 파일.
3. 새 App ID 및 SSL certificate 파일
1. 비용을 지불한 앱 계정으로 iOS Provisioning Portal에 로그인합니다.새 App ID.
설명:에 PushChat 입력
Bundle Seed ID: Generate New 기본 선택
Bundle Identifier: com 을 입력합니다.mysoft.PushChat
클릭하여 제출
그러면 다음 레코드가 생성됩니다.
구성을 클릭하십시오.
다음 화면이 나타나면 계속 클릭:
여기서 저희가 앞에 좋은 PushChat을 만들도록 하겠습니다.certSigningRequest 파일을 클릭하여 생성합니다.
생성 중
생성이 완료되면 우리는 그것을 다운로드할 것이다.aps_로 이름 지정developer_identity.cer.
완료를 클릭하면 Enabled 상태가 됩니다.
지금까지 우리는 이미 세 개의 파일을 생성했다.
1、PushChat.certSigningRequest
2、PushChatKey.p12
3、aps_developer_identity.cer
이제 간단한 아이폰 프로그램을 만듭니다.
1. Xcode를 열고 View-based Application 만들기를 선택합니다.다음 그림과 같이 이름을 지정합니다.
2. PushChatAppDelegate의 didFinishLaunchingWithOptions 방법에 다음 코드를 추가합니다.

   
   
   
   
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; // Let the device know we want to receive push notifications [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; return YES; }

register ForRemote Notification Types 방법을 통해 응용 프로그램에push에서 온 알림을 받아들일 수 있음을 알려 줍니다.
3. xcode에서 실행하면 다음 프롬프트 상자가 나타납니다.
OK 를 선택합니다.이 프로그램이 메시지 알림 서비스를 시작한다는 것을 나타냅니다.
PushChat AppDelegate에서m 코드에 다음 방법을 추가하여 deviceToken을 가져옵니다.

   
   
   
   
- ( void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { NSLog( @" My token is: %@ ", deviceToken); } - ( void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error { NSLog( @" Failed to get token, error: %@ ", error); }

얻은 deviceToken은 웹 서비스 서비스를 통해 제출할 수 있습니다.net 응용 프로그램, 여기는 제가 간단하게 처리합니다. 직접 인쇄해서 복사합니다.net 응용 환경에서 사용합니다.
통지의를 발송하다.net 응용 프로그램이 나오면 deviceToken 외에 APNS와 연결된 인증서가 필요합니다.
이 인증서는 우리가 앞에서 생성한 두 개의 파일을 통해 얻을 수 있다.
OpenSSL을 사용하여 생성합니다.net과 APNS가 통신하는 인증서 파일입니다.
1、aps_를developer_identity.cer에서 aps로 변환_developer_identity.pem 형식.
openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM
2. p12 형식의 개인 키를pem로 변환하려면 네 번의 비밀번호를 설정해야 합니다. 여기 비밀번호는 모두 abc123으로 설정됩니다.
openssl pkcs12 -nocerts -out PushChat_Noenc.pem -in PushChat.p12
3. 인증서와 the 키로 PKCS#12 형식의 파일을 만듭니다.
openssl pkcs12 -export -in aps_developer_identity.pem -inkey PushChat_Noenc.pem -certfile PushChat.certSigningRequest -name "aps_developer_identity"-out aps_developer_identity.p12
이렇게 하면 우리는 얻을 수 있다.net 응용 프로그램에서 사용하는 인증서 파일:aps_developer_identity.p12.
있다net 프로그램에서 알림을 보냅니다.
소스 라이브러리가 있습니다: apns-sharp.
주소:http://code.google.com/p/apns-sharp/.
우리는 안에 있는 JdSoft에 대한 원본 코드를 다운로드했다.Apple.Apns.Notifications를 조정하면 사용할 수 있습니다.
우리는 DeviceToken과 p12File에 따라 JdSoft에 대해Apple.Apns.Notifications.Test 코드는 아래 그림과 같이 조정됩니다.
그럼 오케이.
효과:
알림 코드:

   
   
   
   
for ( int i = 1; i <= count; i++) { // Create a new notification to send Notification alertNotification = new Notification(testDeviceToken); alertNotification.Payload.Alert.Body = string.Format( " Testing {0}... ", i); alertNotification.Payload.Sound = " default "; alertNotification.Payload.Badge = i; // Queue the notification to be sent if (service.QueueNotification(alertNotification)) Console.WriteLine( " Notification Queued! "); else Console.WriteLine( " Notification Failed to be Queued! "); // Sleep in between each message if (i < count) { Console.WriteLine( " Sleeping " + sleepBetweenNotifications + " milliseconds before next Notification... "); System.Threading.Thread.Sleep(sleepBetweenNotifications); } }

핸드폰으로 찍은 아이패드 위에 표시:
총결: 이 글은 주로ios 메시지 전송 메커니즘의 실현, 어떻게 통과했는지 상세하게 설명한다.net 응용 프로그램은ios 응용 프로그램에 메시지를 보냅니다.
from:http://www.cnblogs.com/aspnethot/articles/2248903.html

좋은 웹페이지 즐겨찾기