我需要CloudKit的推送通知,因此我不想要求用户首次启动应用时获得通知权限。我只想在实际需要权限的位置询问用户。因此,我在应用内设置控制器中添加了两个按钮 - 一个允许用户设置CloudKit,另一个允许用户启用推送通知(如果尚未启用)。问题在于OneSignal的设置方式。设置应该在application:didFinishLaunchingWithOptions:
中进行,使用的方法(setupOneSignalWithLaunchOptions:
)需要launchOptions
参数。有没有办法从应用程序中的viewController设置OneSignal,而不是从App Delegate设置?
编辑:我想我可以保存launchOptions并在我准备稍后设置OneSignal时使用它们。在随后的应用启动中,setupOneSignalWithLaunchOptions:
将按照预期在application:didFinishLaunchingWithOptions:
中调用。但是当用户最初启用通知时,我将使用已保存的launchOptions
,因为该应用可能在一段时间内不会再次启动(它确实在后台运行)。
答案 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-