デバイストークンが登録されない(iOSの場合)

1. iOS10で許可ダイアログの拒否を選択している

iOS10 の端末で、許可ダイアログの拒否を押しますと、下記メソッドが呼ばれず、デバイストークンが取得されません。

- (void) application:(UIApplication* )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData* )deviceToken

2. Xcode8で、capability で Push Notification を ON にしていない

Xcode8の設定については  【Xcode8】CapabilitiesのPushNotificationsの設定について をご参照ください。

3. Growthbeat SDK 2.x.x で setDeviceToken をしていない

Growthbeat SDK 2.xではGrowth Push initializeメソッドを読んだ時点でデバイストークン「NULL」で端末の登録が行われます。requestDeviceTokenの実装を行わないと、OSからデバイストークンが取得されません。また、setDeviceTokenを行わないと、Growth Pushにデバイストークンが送信されません。

4. その他

アプリのUIApplicationDelegateの実装クラスに、application:didFailToRegisterForRemoteNotificationsWithError: メソッドを実装して、何が出力されるかご確認してください。

- (void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"error: %@", error);
}

例えば、iOS シミュレーターで実行した場合、下記のようなプッシュ通知が利用できない旨のエラーが出力されます。

error: Error Domain=NSCocoaErrorDomain Code=3010 "remote notifications are not supported in the simulator" UserInfo=0x8535c10 {NSLocalizedDescription=remote notifications are not supported in the simulator}

多くの場合下記に該当するエラーが出力されます。

・iOSシミュレータの場合は取得できない。
・アプリがiOS Developer Centerでプッシュ通知が有効にされていない場合は取得できない。
・アプリのProvisioning Profileがワイルドカード証明書の場合は取得できない。