14509


<https://azure.microsoft.com/ja-jp/documentation/articles/notification-hubs-
ios-get-started/>  
のチュートリアルをもとに、Azure Notification HubsのPush通知を受け取るiOSアプリを作成しましたが、メッセージを受信できません。

手順は、  
<https://github.com/Azure/azure-mobile-
services/blob/master/CHANGELOG.ios.md#sdk-downloads>  
からiOS用SDK V1.2.4をダウンロードし、  
プロジェクトのLinked Frameworks and Libariesから追加。  
Swiftから使用できるようにするために、新規にObjective-Cファイルを作成し、以下のコードを追加。

AzureMessaging-Bridging-Header.h

[code]

    #import "WindowsAzureMessaging/WindowsAzureMessaging.h"
    #endif
    
[/code]

Build Settings>Swift Compiler - Code Generation>Objective-C Bridging
Headerに上記Bridging-Header.hファイルのパスを指定。

AppDelegate.swiftに以下を追加。

[code]

    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        var window: UIWindow?
        let notificationHubConnectionString = "Endpoint=XXXXXXX"
        let notificationHubPath = "XXXXXX"
    
        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            var types = UIUserNotificationType.Badge |
                        UIUserNotificationType.Alert |
                        UIUserNotificationType.Sound
            var setting = UIUserNotificationSettings(forTypes: types, categories: nil)
    
            application.registerUserNotificationSettings(setting)
    
            return true
        }
    
        func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
            application.registerForRemoteNotifications()
        }
    
        func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    
            var hub = SBNotificationHub(
                connectionString: notificationHubConnectionString,
                notificationHubPath: notificationHubPath)
            hub.registerNativeWithDeviceToken(deviceToken, tags: nil, completion: {(error) -> Void in
                if (error != nil) {
                    println("Error registering for notifications: \(error)")
                } else {
                    println("Success registering for notifications: \(deviceToken)")
                }
            })
        }
    
        func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
            println("didFailToRegisterForRemoteNotificationsWithError \(error)")
        }
    
        func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
            println(userInfo.description)
            switch (application.applicationState) {
                case UIApplicationState.Active: 
                    let alert = UIAlertController(title: "", message: userInfo.description, preferredStyle: .Alert)
                    let defaultAction = UIAlertAction(title: "OK", style: .Cancel, handler: nil)
                    alert.addAction(defaultAction)
                    self.window?.rootViewController?.presentViewController(alert, animated: true, completion: nil)
                case UIApplicationState.Background, UIApplicationState.Inactive:
                    println(userInfo.description)
                default: break
            }
        }
    ・
    ・
    ・
    
[/code]

Apple Member CenterでPush通知用の証明書(開発用)を作成し、p12ファイルをAzureポータルにアップロード(SANDBOX用)。

Apple Member Centerでプロビジョニングファイル(開発用)を作成し、XCodeにインストール。

XCodeで、Build Settings>Code Signing>Provisioning
Profise>Debugからインストールしたプロビジョニングファイルを指定(XCodeのプロジェクトのBundle
Identiferはプロビジョニング作成時のiOS App IDと一致している)。

XCodeの、General>Deployment Info>Deployment Targetは8.0を指定。

設定しているNotification Hubsの接続文字列はDefaultListenSharedAccessSignatureを使用。

iPhone(iOS8.2)の実機で実行。

以上のような手順を踏みましたが、AzureのポータルサイトのNotification
Hubsのデバッグからテスト通知を送信しても、iPhoneでメッセージを受信できません。

・application didRegisterForRemoteNotificationsWithDeviceToken()で、エラーになっておりません  
・application didFailToRegisterForRemoteNotificationsWithError()は呼ばれていません  
・通知が受信できれば、application didReceiveRemoteNotification()が呼ばれるかと思いますが、呼ばれていません  
・iPhoneの設定で、アプリのPush通知は許可になっています

環境は  
XCode 6.4  
iPhone6 iOS 8.2  
です。

他に何か足りない点があるのでしょうか？  
ご存知の方、教えていただけないでしょうか？


CC BY-SA 3.0
2015-08-17T02:37:04.340
14504
2015-08-17T04:49:49.287
2015-08-17T02:47:45.630
10952
10952
question
ios swift azure push-notification
iOS(Swift)で、Azure Notification Hubsのプッシュ通知のメッセージを取得できない


すいません、自己解決しました。  
社内ネットワークのプロキシによってPush通知を受け取れていませんでした。  
プロキシのないネットワークにiPhoneを接続しなおすことでPush通知受け取れていました。


CC BY-SA 3.0
2015-08-17T04:49:49.287
14509
2015-08-17T04:49:49.287
10952
14504
answer