0

IOS プッシュ通知を開発していて、デバイス トークンを取得しようとしています。OSの通知設定をオンにすると、デバイストークンを取得できました。オフにすると、mydidRegisterForRemoteNotificationsWithDeviceTokenが呼び出されなくなり、デバイス トークンを取得できなくなります。

ここに私のコードがあります

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { #ifdef __IPHONE_8_0 //Right, that is the point UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge |UIUserNotificationTypeSound |UIUserNotificationTypeAlert) categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; #else //register to receive notifications UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound; [[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes]; #endif return YES; }

そして私も追加しました

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings

- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler

ただし、OSの通知設定をオフにすると、

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

呼び出されません。これを何時間もデバッグしましたが、うまくいきませんでした。

4

1 に答える 1

0

私は同じ問題に遭遇しました。

プロジェクトの機能セクションで「リモート通知」を有効にすることで解決できました(下のスクリーンショットを参照)。

バックグラウンド モード

この問題に関する私の意見:

ユーザーがアプリケーションからの通知を明示的に禁止し、アプリケーションが「リモート通知」をオフにしている場合、ユーザーに通知を配信する方法はありません。そのため、アプリケーションのトークンを返す必要はありません。

ユーザーが通知をオフにしても、 「リモート通知」を有効にした場合、サイレント通知を送信する機会がまだあり、iOS がトークンを提供することを意味します。

于 2015-10-31T09:45:28.810 に答える