2017. 11. 21. 10:12
Azure Notification Hub을 이용하여 Mobile App 에 알림 서비스를 연동 개발 합니다. 개발 도구는 Xamarin.Forms 를 이용하여 Android 및 iOS App 에 연동 테스트를 하겠습니다.
- Apple APNS 설정
Apple 는 인증서 방식으로 Azure Notification Hub와 연동을 합니다. 그래서 APNS 인증서를 만드는 것이 중요 합니다. 다소 복잡해서 여러번 실패를 했습니다.
아래 사이트를 참조하여 생성하십시오.
- Sending push notifications to iOS with Azure Notification Hubs
- Xamarin.iOS – 인증서, 프로비전 등 개발을 위한 디바이스 설정
Mac 에서 "Keychain Access(키 체인 접근)" 을 실행 합니다. 그리고 메뉴에서 "키체인 접근 > 인증서 지원 > 인증 기관에서 인증서 요청 …" 를 클릭합니다.
인증서 지원 창에서 각 항목을 입력하고 "디스크에 저장됨" 을 선택하고 "계속" 버튼을 클릭합니다.
인증서 이름을 입력하고 "저장" 버튼을 클릭합니다. 해당이름으로 생성됩니다.
이제 Apple Developer center로 접속 하여 푸시 알림 App을 등록 하겠습니다.
https://developer.apple.com/ 로 이동하여 계정으로 로그인 합니다. 로그인 후 "Certificates, Identifiers & Profiles" 를 클릭합니다.
"identifiers > App IDs" 선택합니다. "+" 버튼을 클릭해서 새로 등록 합니다.
"App ID Description" Name에 적당한 이름을 입력 합니다. "App ID Suffix" 에서 "Explicit App ID" 를 선택하고 "Bundle ID" 에 Mobile App 프로젝트에서 "번들 식별자" 와 같은 이름으로 입력 합니다.
"App Services" 에서 "Push Notifications"을 선택 합니다. 그리고 "Continue" 버튼을 클릭합니다.
다음 화면에서 "Register" 버튼을 클릭합니다.
"Done" 버튼을 클릭합니다.
완료 후에 아래와 같은 화면이 나타나면 "Push Notifications" 설정을 위해 "Edit" 버튼을 클릭합니다.
아래 화면에서 "Development SSL Certificate" 에서 "Create Certificate…" 버튼을 클릭합니다.
다음 화면에서 "Continue" 버튼을 클릭합니다.
"Choose File…" 을 클릭해서 앞에서 만든 인증서를 찾아 등록 합니다.
등록 후 "Continue" 버튼을 클릭합니다.
Certificate 가 생성되면 "Download" 버튼을 클릭하여 다운로드 합니다.
다운로드 한 인증서 파일을 더블 클릭해서 "Keychain Access(키 체인 접근)" 에 등록 합니다.
등록 후 아래와 같이 확인 할 수 있습니다.
등록된 인증서를 아래와 같이 내보내기 합니다. 인증서 암호를 등록 후 내 보내기 합니다. 여기서 내보내기 한 인증서를 Azure Notification Hub 에 등록해서 연동 합니다.
이제 App에서 사용할 프로비저닝 프로파일을 만들겠습니다. 다시 Apple Development 센터로 이동 합니다.
"Provisioning Profiles" 에서 "Development" 를 선택하고 "+" 버튼을 클릭해서 새로운 프로파일을 생성합니다.
"iOS App Development" 를 선택 하고 "Continue" 버튼을 클릭합니다.
사용 할 App ID를 선택 후 "Continue" 버튼을 클릭합니다.
사용 할 개발 인증서를 선택 후 "Continue" 버튼을 클릭합니다.
사용 할 device 를 선택 후 "Continue" 버튼을 클릭합니다.
Profile Name을 입력하고 "Continue" 버튼을 클릭합니다.
생성된 Profile을 다운로드 하고 더블크릭해서 설치 합니다.
- Azure Notification Hub 연동
Azure Portal 로 이동하여 샹성 한 "알림 허브" 로 이동합니다.
"알림 서비스" 을 선택하고 "Apple(APNS)" 를 클릭합니다.
"인증서"를 선택합니다.
"파일 선택" 에서 폴더 아이콘을 클릭합니다.
앞에서 생성한 APNS 인증서를 선택 등록 합니다.
인증서 암호를 입력하고 "응용 프로그램 모드" 에서는 개발 중이기 때문에 "샌드박스" 를 선택하고 "저장" 버튼을 클릭합니다.
정상적으로 등록이 완료 되었습니다.
- Visual Studio for Mac 에서 iOS Mobile App 프로젝트 환경 설정
사용 하고자 하는 iOS Emulator 는 Xcode 을 통해서 다운 받아 설치 합니다.
Mobile App을 Visual Studio for Mac 에서 열고 "XXXXX.iOS" 를 시작 프로젝트로 설정 합니다. 그리고 프로젝트 를 더블 클릭해서 옵션 창을 열어서 iOS 번들 서명을 아래와 같이 설정하고 "확인" 버튼을 클릭합니다.
프로젝트 파일 중 "Info.pilst" 열어서 배포 대상 버전을 설정합니다.
그리고, 아래에 "백그라운드 모드" 에서 사용을 선택하면 확장 옵션이 나타납니다. 여기에서 "원격 알림"을 체크 합니다.
- iOS Mobile App 코드 수정
"AppDelegate.cs" 파일을 열어서 아래 코드를 추가 합니다.
using Newtonsoft.Json.Linq; |
AppDelegate 클래스에서 다음 코드를 FinishedLaunching 메서드에 추가합니다.
// Register for push notifications.
var settings = UIUserNotificationSettings.GetSettingsForTypes(
UIUserNotificationType.Alert
| UIUserNotificationType.Badge
| UIUserNotificationType.Sound,
new NSSet());
UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
UIApplication.SharedApplication.RegisterForRemoteNotifications(); |
AppDelegate 클래스에 RegisteredForRemoteNotifications 및 DidReceiveRemoteNotification 이벤트를 추가 합니다.
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
{
const string templateBodyAPNS = "{\"aps\":{\"alert\":\"$(messageParam)\"}}";
JObject templates = new JObject();
templates["genericMessage"] = new JObject
{
{"body", templateBodyAPNS}
};
// Register for push with your mobile app
Push push = TodoItemManager.DefaultManager.CurrentClient.GetPush();
push.RegisterAsync(deviceToken, templates);
}
public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
{
NSDictionary aps = userInfo.ObjectForKey(new NSString("aps")) as NSDictionary;
string alert = string.Empty;
if (aps.ContainsKey(new NSString("alert")))
alert = (aps[new NSString("alert")] as NSString).ToString();
//show alert
if (!string.IsNullOrEmpty(alert))
{
UIAlertView avAlert = new UIAlertView("Notification", alert, null, "OK", null);
avAlert.Show();
}
} |
코드 수정 완료 후 빌드 합니다.
- iOS Notification Hub 연동 테스트
Visual Studio for Mac 에 대해 친숙함이 없어서 인지 iOS Emulator 에서 테스트 할 경우 Notification Message 가 나타나지 않습니다. 이유는 아직 못 찾았습니다.
그래서, iPad 에 배포해서 테스트를 했습니다.
테스트 방법은 Android 와 똑 같습니다. 에디트 박스에 입력 하고 오른쪽 에 있는 "+" 버튼을 클릭합니다.
Azure App service 를 거쳐서 아래와 같이 Notification 에 정상적으로 발생 합니다.
'Microsoft Azure > Web + Mobile' 카테고리의 다른 글
Azure Notification Hub : Xamarin.Forms 을 이용한 Mobile App 개발(Android)-2 (0) | 2017.11.21 |
---|---|
Azure Notification Hub : Xamarin.Forms 을 이용한 Mobile App 개발(구성 및 Back-end)-1 (0) | 2017.11.21 |
Azure Notification Hub 구성 (0) | 2017.11.14 |