在应用程序之后为OneSignal注册推送通知:didFinishLaunchingWithOptions

时间:2017-05-01 17:27:17

标签: ios push-notification onesignal

我需要CloudKit的推送通知,因此我不想要求用户首次启动应用时获得通知权限。我只想在实际需要权限的位置询问用户。因此,我在应用内设置控制器中添加了两个按钮 - 一个允许用户设置CloudKit,另一个允许用户启用推送通知(如果尚未启用)。问题在于OneSignal的设置方式。设置应该在application:didFinishLaunchingWithOptions:中进行,使用的方法(setupOneSignalWithLaunchOptions:)需要launchOptions参数。有没有办法从应用程序中的viewController设置OneSignal,而不是从App Delegate设置?

编辑:我想我可以保存launchOptions并在我准备稍后设置OneSignal时使用它们。在随后的应用启动中,setupOneSignalWithLaunchOptions:将按照预期在application:didFinishLaunchingWithOptions:中调用。但是当用户最初启用通知时,我将使用已保存的launchOptions,因为该应用可能在一段时间内不会再次启动(它确实在后台运行)。

1 个答案:

答案 0 :(得分: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-