내보내기(0) 인쇄
모두 확장

Service Bus 알림 허브 자습서(Android 앱)

Windows Azure Service Bus 알림 허브는 사용자가 타사 앱 플랫폼을 통해 장치 푸시 알림을 보낼 수 있는 Service Bus 엔터티입니다. 이러한 플랫폼은 다음과 같습니다.

  1. Windows 8용 WNS(Windows 푸시 알림 서비스)

  2. APNs(Apple 푸시 알림 서비스)

  3. Android용 GCM(Google Cloud Messaging) 서비스

이 자습서에서는 GCM을 통해 기본 푸시 알림을 보내는 Android 앱 및 간단한 ASP.NET MVC 앱을 설정하는 방법을 설명합니다.

note참고
알림 허브는 2013년 1월, 미리 보기 기능으로 Windows Azure Service Bus에서 제공되며 2013년 중반기에는 GA(General Availability)로 전환될 것입니다.

note참고
알림 허브의 기능이 향상되었으므로 2013년 4월 이전에 다운로드한 SDK는 새 알림 허브에서 작동하지 않습니다. 반대로 현재 SDK는 2013년 4월 이전에 만든 알림 허브에서 작동하지 않습니다. 낙관적 동시성 제어 같은 새 기능을 사용하려면 새 알림 허브에 새 SDK를 사용하십시오. 2013년 4월 이전에 만든 알림 허브에 대한 지원은 알림 허브가 GA로 전환될 때 종료됩니다.

Windows Phone용 MPNS(Microsoft 푸시 알림 서비스)에 대한 지원은 곧 추가될 예정입니다.

심화 설명이 포함되어 있는 방법: Service Bus 알림 허브(Android 앱) 항목과 Windows Azure Service Bus 알림 허브 개요도 참조할 수 있습니다. Windows 스토어 및 iOS 앱에서의 알림 허브 사용 방법에 대한 자세한 내용은 방법: Service Bus 알림 허브(Windows 스토어 앱)방법: Service Bus 알림 허브(iOS 앱) 항목을 참조하십시오.

선행되어야 할 사항

  1. Service Bus .NET Preview SDK. 이 SDK는 Service Bus 미리 보기 기능이 포함되어 있는 NuGet 패키지로, 여기에서 다운로드할 수 있습니다. 이 패키지는 Service Bus 미리 보기 기능으로, Microsoft.ServiceBus.Preview.dll이라는 새 Service Bus 라이브러리를 포함하고 있습니다. 알림 허브를 사용하려면 프로덕션 버전(Microsoft.ServiceBus.dll) 대신 이 라이브러리를 사용합니다.

  2. Android SDK(선택적으로 Eclipse). 여기에서 다운로드할 수 있습니다.

  3. Android 알림 허브 SDK. 이 SDK는 여기에서 다운로드할 수 있습니다.

Google API 프로젝트 만들기 및 API 키 생성

Google API 프로젝트를 만들려면

  1. Google APIs Console 페이지를 엽니다.

  2. 이미 프로젝트가 있는 상태에서 프로젝트를 새로 만들려는 경우 Other projects, Create를 차례로 클릭합니다. 이번에 처음으로 Google API 프로젝트를 만드는 경우 Create project…를 클릭하여 프로젝트를 만듭니다.

    푸시 알림
  3. 브라우저 URL이 https://code.google.com/apis/console/#project:1234567890과 같이 변경됩니다.

  4. #project 뒤에 나오는 숫자를 기록해 둡니다(예: 앞의 경우 1234567890). 이 숫자는 GCM 보낸 사람 ID입니다.

GCM을 사용하도록 설정하고 서버 API 키를 생성합니다.

  1. 기본 Google APIs Console 페이지에서 Service를 클릭합니다.

  2. Google Cloud Messaging 토글을 On으로 설정하고 서비스 약관에 동의합니다.

  3. 다시, 기본 Google APIs Console 페이지에서 API Access를 클릭합니다.

  4. Create new Server key, Create를 차례로 클릭합니다.

    note참고
    IP 주소 허용 목록은 채우지 않아도 됩니다.

  5. 만든 API 키를 기록해 둡니다.

Service Bus 알림 허브 만들기

Windows Azure 관리 포털을 사용하여 알림 허브를 만들고 Android 앱에 푸시 알림을 보내도록 구성합니다.

  1. Windows Azure 관리 포털에 로그온합니다.

  2. 왼쪽 하단 구석에 있는 새로 만들기를 클릭합니다.

  3. 앱 서비스, Service Bus, 알림 허브, 빨리 만들기를 차례로 클릭합니다.

    푸시 알림
  4. 알림 허브 이름, 지역 및 이 알림 허브가 만들어질 네임스페이스를 선택합니다(제공되는 네임스페이스가 없으면 지정된 이름의 새 네임스페이스가 프로비전됨). 확인 표시를 클릭합니다.

  5. 왼쪽 탐색 창의 Service Bus 탭 아래에서, 조금 전에 만든 네임스페이스를 클릭합니다. 알림 허브가 목록에 표시됩니다.

    푸시 알림
  6. 알림 허브를 클릭한 다음 상단의 구성 탭을 클릭합니다.

    푸시 알림
  7. 앞에서 가져온 GCM API 키를 붙여 넣고 저장을 클릭합니다.

앱 연결

아직 Android 프로젝트가 없는 경우 새로 만듭니다.

  1. Eclipse ADT에서 새 Android 프로젝트를 만들고(File, New, Android Application), Minimum Required SDKAPI 8: Android 2.2 (Froyo)로 설정합니다.

    푸시
  2. 마법사의 안내를 따라 표준 설정을 유지합니다(예: 빈 activity 만들기).

    푸시
  3. Eclipse의 상단 도구 모음에서 Android SDK Manager를 엽니다. 아래에 표시된 것처럼 Google APIs, Google Cloud Messaging for Android LibraryGoogle Play Service를 클릭합니다. Install Packages를 클릭합니다. Eclipse를 다시 시작합니다.

    note참고
    참고: SDK Manager 상단에 표시되어 있는 SDK 경로를 기억해 둡니다.

    푸시
  4. SDK 경로로 이동하고, 패키지 탐색기에서 프로젝트의 \libs 디렉터리에 \extras\google\gcm\gcm-client\dist\gcm.jar, \extras\google\google_play_services\libproject\google-play-services_lib\libs\google-play-services.jar 파일을 복사합니다.

  5. 여기에서 알림 허브 Android SDK를 다운로드합니다. zip 파일의 압축을 풀고 패키지 탐색기에서 프로젝트의 \libs 디렉터리에 notificationhubs\notification-hubs-sdk.jar 파일을 복사합니다.

  6. 패키지 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 Properties를 클릭합니다. 왼쪽 창에서 Android를 클릭합니다. Google APIs 대상을 선택합니다. 확인을 클릭합니다.

    푸시

    이제 GCM에서 registrationId를 가져오도록 앱을 설정합니다. registrationId를 사용하여 알림 허브에 앱 인스턴스를 등록합니다.

  7. AndroidManifest.xml 파일에서 <uses-sdk/> 요소 바로 아래에 다음 줄을 추가합니다. <your package>를 1단계에서 앱에 대해 선택한 패키지로 바꿔야 합니다(이 예에서는 com.microsoft.testnotificationhubs).

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    
    <permission android:name="<your package>.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="<your package>.permission.C2D_MESSAGE"/>
    
  8. MainActivity 클래스에 다음 private 멤버를 추가합니다.

    note참고
    이전에 가져온 보낸 사람 ID를 사용해야 합니다.

    private String SENDER_ID = "<your project number>";
    private GoogleCloudMessaging gcm;
    private NotificationHub hub;
    
  9. Windows Azure 관리 포털에서 알림 허브 대시보드로 이동하고 연결 정보를 클릭하여 수신 대기 권한이 있는 연결 문자열을 가져옵니다.

    푸시
  10. OnCreate 메서드에 다음 코드를 추가하고, 자리 표시자를 이전에 가져온 수신 대기 권한이 있는 연결 문자열과 알림 허브의 이름으로 바꿔야 합니다.

    gcm = GoogleCloudMessaging.getInstance(this);
            
    String connectionString = "<your listen access connection string>";
    hub = new NotificationHub("<your notification hub name>", connectionString, this);
    
    registerWithNotifiationHub();
    
  11. MainActivity.java에서 다음 메서드를 만듭니다.

    @SuppressWarnings("unchecked")
    private void registerWithNotificationHubs() {
       new AsyncTask() {
          @Override
          protected Object doInBackground(Object... params) {
             try {
                String regid = gcm.register(SENDER_ID);
                hub.register(regid);
             } catch (Exception e) {
                return e;
             }
             return null;
         }
       }.execute(null, null, null);
    }
    
  12. Android에는 알림이 표시되지 않으므로 수신기를 직접 작성해야 합니다. AndroidManifest.xml에서 <application/> 요소 내에 다음 요소를 추가합니다.

    note참고
    자리 표시자를 패키지 이름으로 바꿉니다.

    <receiver
        android:name=".MyBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
       <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
          <category android:name="<your package name>" />
       </intent-filter>
    </receiver>
    
  13. 새 클래스를 만듭니다(패키지 탐색기에서 앱 패키지를 마우스 오른쪽 단추로 클릭하고 새로 만들기, 클래스를 차례로 클릭). android.content.BroadcastReceiver에서 파생된 MyBroadcastReceiver 클래스의 이름을 지정합니다.

    푸시
  14. MyBroadcastReceiver에 다음 코드를 추가합니다.

    public static final int NOTIFICATION_ID = 1;
        private NotificationManager mNotificationManager;
        NotificationCompat.Builder builder;
        Context ctx;
    
    @Override
    public void onReceive(Context context, Intent intent) {
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
            ctx = context;
            String messageType = gcm.getMessageType(intent);
            if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
                sendNotification("Send error: " + intent.getExtras().toString());
            } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) {
                sendNotification("Deleted messages on server: " + 
                        intent.getExtras().toString());
            } else {
                sendNotification("Received: " + intent.getExtras().toString());
            }
            setResultCode(Activity.RESULT_OK);
    }
    
    private void sendNotification(String msg) {
    mNotificationManager = (NotificationManager)
                  ctx.getSystemService(Context.NOTIFICATION_SERVICE);
          
          PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
              new Intent(ctx, MainActivity.class), 0);
          
          NotificationCompat.Builder mBuilder =
              new NotificationCompat.Builder(ctx)
              .setSmallIcon(R.drawable.ic_launcher)
              .setContentTitle("Notification Hub Demo")
              .setStyle(new NotificationCompat.BigTextStyle()
                         .bigText(msg))
              .setContentText(msg);
          
         mBuilder.setContentIntent(contentIntent);
         mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
    
    

에뮬레이터에서 앱 실행

에뮬레이터에서 이 앱을 실행할 때 Google API를 지원하는 AVD(Android Virtual Device)를 사용해야 합니다.

  1. Window에서 Android Virtual Device Manager를 클릭하고 장치를 선택한 다음 Edit를 클릭합니다.

    푸시
  2. Target에서 Google APIs를 선택한 다음 OK를 클릭합니다.

    푸시
  3. 상단 도구 모음에서 Run을 클릭하고 앱을 선택합니다. 그러면 에뮬레이터가 시작되고 앱이 실행됩니다.

  4. 앱이 GCM에서 registrationId를 검색하고 알림 허브에 등록합니다.

note참고
푸시 알림을 받으려면 Android Virtual Device에서 Google 계정을 설정해야 합니다(에뮬레이터에서 Settings로 이동하여 Add Account 클릭). 또한 에뮬레이터가 인터넷에 연결되어 있어야 합니다.

.NET을 사용하여 알림 보내기

알림을 만들고 보내기 위해 간단한 콘솔 앱을 만듭니다. 일반 웹 앱 내에 이 코드를 다시 사용할 수 있습니다.

Visual Studio Express 2012 for Windows 8을 사용할 경우 콘솔 앱을 만들려면 Visual Studio Express 2012 for Windows Desktop으로 이동합니다. 또는 Visual Studio Express 2012 for Web을 사용하면 간단한 Web Forms 앱을 만들 수 있습니다.

다음에 참조를 추가합니다.

  • System.Runtime.Serialization.dll

  • System.Runtime.Serialization.dll

콘솔 앱을 만들 경우에는 다음 코드를 Main() 함수로 사용합니다. 자리 표시자를 Windows Azure 관리 포털에서 복사할 수 있는, 모든 권한이 있는 연결 문자열 및 알림 허브의 이름으로 바꿉니다.

푸시

구체적인 GCM JSON 형식에 주의합니다(자세한 내용은 여기 참조).

static void Main(string[] args)
{
    var hubClient = NotificationHubClient.CreateClientFromConnectionString(<your connection string with full access>, "<your notification hub name>");
    hubClient.SendGcmNativeNotification("{ \"data\" : {\"msg\":\"Hello from Windows Azure!\"}}");
}

10,000개의 클라이언트 인스턴스가 등록된 경우 알림 허브는 10,000개의 알림 사본을 만들어 보내며 필요한 오류 처리 및 등록 관리를 수행합니다.

푸시

Node.js를 사용하여 알림 보내기

컴퓨터에 Node.js 및 npm을 설치합니다.

  1. azure 노드 모듈을 설치합니다.

    npm install azure
    
  2. 노드 스크립트(또는 대화형 콘솔)에서 다음을 입력합니다.

    var azure = require('azure');
    var hub = azure.createNotificationHubService('<your hub name>', '<your connection string with full access>');
    hub.gcm.send(null, '{"data":{"msg":"Hello from node.js!"}}');
    

10,000개의 클라이언트 인스턴스가 등록된 경우 알림 허브는 10,000개의 알림 사본을 만들어 보내며 필요한 오류 처리 및 등록 관리를 수행합니다.

모바일 서비스를 사용하여 알림 보내기

모바일 서비스를 사용하면 앱에 대한 백엔드를 빠르게 만들 수 있습니다. 모바일 서비스의 알림 허브를 사용하여 수백 만 개의 장치에 알림을 브로드캐스트하거나 태그를 사용하여 관심 그룹을 손쉽게 만들 수 있습니다.

이 자습서에서는 예약된 작업을 사용하지만 모바일 서비스의 서버 쪽 스크립트에서 알림을 보낼 수 있습니다.

  1. 새 모바일 서비스를 만들거나 자신의 모바일 서비스에 로그인합니다. 모바일 서비스에 대한 자세한 내용은 여기를 참조하십시오.

  2. 상단 도구 모음에서 Scheduler를 클릭합니다.

    푸시 알림
  3. 새 예약된 작업을 만들고 이름을 삽입한 다음 On demand를 클릭합니다.

    푸시 알림
  4. 작업이 만들어지면 작업 이름을 클릭합니다. 상단 도구 모음에서 Script를 클릭합니다.

  5. 다음 스크립트를 삽입합니다. 자리 표시자를 알림 허브 이름 및 앞에서 가져온 DefaultFullSharedAccessSignature의 연결 문자열로 바꿔야 합니다. 저장을 클릭합니다.

    function PushToNotificationHub() {
        var azure = require('azure');
        
        var notificationHubService = azure.createNotificationHubService('<hub name>',
        '<connection string>');
    
        notificationHubService.hub.gcm.send(
            null,
            '{
                "data":
                {
                   "msg" : "Hello from Mobile Services!"
                }
            }',
            function (error)
            {
                if (!error) {
                    console.warn("Notification successful");
                }
            }
        );
    }
    
  6. 하단 도구 모음에서 Run Once를 클릭합니다.

note참고
모바일 서비스는 Node.js용 Windows Azure SDK를 사용하여 알림 허브에 액세스합니다. 알림 허브와 Node.js용 Windows Azure SDK에 대한 자세한 내용은 여기를 참조하십시오.

앞에서 설명한 것처럼 10,000개의 클라이언트 인스턴스가 등록된 경우 알림 허브는 10,000개의 알림 사본을 만들어 보내며 필요한 오류 처리 및 등록 관리를 수행합니다. 여러 플랫폼 알림을 보내고, 특정 사용자 및 관심 그룹을 대상으로 하는 방법 및 기타 고급 기능에 대한 자세한 내용은 심화 설명이 포함되어 있는 방법: Service Bus 알림 허브(Windows 스토어 앱) 항목 및 Windows Azure Service Bus 알림 허브 개요를 참조하십시오.

커뮤니티 추가 항목

표시:
© 2014 Microsoft