iOS(Swift)で、Azure Notification Hubsのプッシュ通知のメッセージを取得できない
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
#import "WindowsAzureMessaging/WindowsAzureMessaging.h"
#endif
Build Settings>Swift Compiler - Code Generation>Objective-C Bridging Headerに上記Bridging-Header.hファイルのパスを指定。
AppDelegate.swiftに以下を追加。
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
}
}
・
・
・
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
です。
他に何か足りない点があるのでしょうか?
ご存知の方、教えていただけないでしょうか?