2017-05-01 11 views
1

CloudKitのプッシュ通知が必要です。そのため、アプリケーションの最初の起動時にユーザーに通知の許可を求めたくありません。私は、許可が実際に必要なところでユーザーに尋ねたいだけです。だから私は、アプリケーションの設定コントローラに2つのボタンを追加しています.1つは、ユーザーがCloudKitを設定できるようにするボタンと、まだ有効にしていない場合にプッシュ通知を有効にするボタンです。この問題は、OneSignalがセットアップされていることになります。設定はapplication:didFinishLaunchingWithOptions:で行われ、使用される方法(setupOneSignalWithLaunchOptions:)にはlaunchOptionsパラメータが必要です。 App Delegateからではなく、アプリケーション内のviewControllerからOneSignalを設定する方法はありますか?アプリケーションの後にOneSignalのプッシュ通知を登録する:didFinishLaunchingWithOptions

EDIT:launchOptionsを保存して、後でOneSignalを設定する準備ができたら使用すると思っています。その後のアプリの起動では、setupOneSignalWithLaunchOptions:は、application:didFinishLaunchingWithOptions:で意図した通り呼び出されます。しかし、ユーザーが最初に通知を有効にすると、アプリがしばらくの間(それはバックグラウンドで実行される)再起動されない可能性があるため、保存されたlaunchOptionsを使用します。

+0

あなたの編集は、私はあなたのDOを示唆しているものです。もう一つの方法は 'launchOptions'ディクショナリを調べてそこにあるものを調べることです。おそらくあなたは簡単に複製できますが、あなたが' UIApplication'から取得したものを保存することをお勧めします。機能性。 – EmilioPelaez

答えて

1

OneSignal SDKにはkOSSettingsKeyAutoPromptという設定があります。あなたが使用してライブラリを初期化するときは、この設定のfalseの値を渡すことができます。

+ (id)initWithLaunchOptions:(NSDictionary*)launchOptions appId:(NSString*)appId handleNotificationAction:(OSHandleNotificationActionBlock)actionCallback settings:(NSDictionary*)settings;

をこれが表示されると、あなたの代わりに呼び出すことで、後でそれをトリガーすることができない、警告プロンプトが発生します。

+ (void)promptForPushNotificationsWithUserResponse:(void(^)(BOOL accepted))completionHandler;

さらに詳しい情報:https://documentation.onesignal.com/v3.0/docs/ios-native-sdk#section--kossettingskeyautoprompt-

+0

これで、後でプッシュ通知を受け取るかどうかにかかわらず、OneSignalをセットアップできます。それは非常に役に立ちます。 promptForPushNotificationsWithUserResponseの問題は、OneSignalがプッシュ/リモート通知を使用する唯一のAPIではないため、[[UIApplication sharedApplication] registerForRemoteNotifications]を使用する必要があることです。 – SAHM

+0

私はおそらく、promptForPushNotificationsWithUserResponseの代わりにregisterForRemoteNotificationsを使用することに関する新しい質問を投稿する必要があります。 – SAHM

+0

はい、新しい質問を投稿する必要があります。 – Dima

関連する問題