Swift OneSignal OSPermissionSubscriptionState setSubscription
Swift OneSignal OSPermissionSubscriptionState setSubscription
我已经更新了我的 cocoapods,但在使用 OneSignal 时出现错误。
错误
类型 'OneSignal' 没有成员 'setSubscription'
OneSignal.setSubscription(true)
在范围
中找不到类型'OSPermissionSubscriptionState'
let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
此代码已在 运行 更新前编译。
我也收到“类型 'OneSignal' 没有成员 'setSubscription'
旧
OneSignal.setSubscription(true)
新
OneSignal.disablePush(false)
旧
func onOSSubscriptionChanged(_ stateChanges: OSSubscriptionStateChanges!) {
if !stateChanges.from.status && stateChanges.to.subscribed {
print("Subscribed for OneSignal push notifications!")
// get player ID
stateChanges.to.userId
print(userID)
print("************************")
}
print("SubscriptionStateChange: \n\(stateChanges)")
}
新
func onOSPermissionChanged(_ stateChanges: OSPermissionStateChanges!) {
// Example of detecting answering the permission prompt
if stateChanges.from.status == OSNotificationPermission.notDetermined {
if stateChanges.to.status == OSNotificationPermission.authorized {
let deviceState = OneSignal.getDeviceState()
let userID = deviceState?.userId
print(userID)
print("************************")
print("Thanks for accepting notifications!")
} else if stateChanges.to.status == OSNotificationPermission.denied {
print("Notifications not accepted. You can turn them on later under your iOS settings.")
}
}
// prints out all properties
print("PermissionStateChanges: \n\(stateChanges)")
}
您也可以像这样拉取 Users OneSignal 信息
let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
// Push Status Methods
let hasPrompted = status.permissionStatus.hasPrompted
print("hasPrompted: ", hasPrompted)
let userStatus = status.permissionStatus.status
print("userStatus: ", userStatus)
let isSubscribed = status.subscriptionStatus.subscribed
print("isSubscribed: ", isSubscribed)
let userSubscriptionSetting = status.subscriptionStatus.userSubscriptionSetting
print("userSubscriptionSetting: ", userSubscriptionSetting)
if let userID = status.subscriptionStatus.userId{
print("userID: ", userID)
}
if let pushToken = status.subscriptionStatus.pushToken {
print("pushToken: ", pushToken)
}
// Email Status Methods
if let emailPlayerId = status.emailSubscriptionStatus.emailUserId {
print("emailPlayerId: ", emailPlayerId)
}
if let emailAddress = status.emailSubscriptionStatus.emailAddress {
print("emailAddress: ", emailAddress)
}
let isEmailSubscribed = status.emailSubscriptionStatus.subscribed
print("isEmailSubscribed: ", isEmailSubscribed)
OneSignal 文档错误
// START OneSignal initialization code
let onesignalInitSettings = [kOSSettingsKeyAutoPrompt: false, kOSSettingsKeyInAppLaunchURL: false]
// Replace 'YOUR_ONESIGNAL_APP_ID' with your OneSignal App ID.
OneSignal.initWithLaunchOptions(launchOptions,
appId: "KEY",
handleNotificationAction: nil,
settings: onesignalInitSettings)
OneSignal.inFocusDisplayType = OSNotificationDisplayType.notification;
//END OneSignal initializataion code
这可能会帮助您获得新的 OneSignal 使用。我刚刚将我的SDK更新到3.1.0,我不得不改变一些点:
新初始化:Link1
import UIKit
import OneSignal
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Remove this method to stop OneSignal Debugging
OneSignal.setLogLevel(.LL_VERBOSE, visualLevel: .LL_NONE)
// OneSignal initialization
OneSignal.initWithLaunchOptions(launchOptions)
OneSignal.setAppId("YOUR_ONESIGNAL_APP_ID")
// promptForPushNotifications will show the native iOS notification permission prompt.
// We recommend removing the following code and instead using an In-App Message to prompt for notification permission (See step 8)
OneSignal.promptForPushNotifications(userResponse: { accepted in
print("User accepted notifications: \(accepted)")
})
return true
}
// Remaining contents of your AppDelegate Class...
}
并且在范围内:Link2
if let deviceState = OneSignal.getDeviceState() {
let userId = deviceState.userId
let pushToken = deviceState.pushToken
let subscribed = deviceState.isSubscribed
}
编辑:
我认为您选择的代码来自此 link
就在楼下,它说新的初始化是:
替换为以下内容
// OneSignal initialization
OneSignal.initWithLaunchOptions(launchOptions)
OneSignal.setAppId("YOUR_ONESIGNAL_APP_ID")
我已经更新了我的 cocoapods,但在使用 OneSignal 时出现错误。
错误
类型 'OneSignal' 没有成员 'setSubscription'
OneSignal.setSubscription(true)
在范围
中找不到类型'OSPermissionSubscriptionState'let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
此代码已在 运行 更新前编译。
我也收到“类型 'OneSignal' 没有成员 'setSubscription'
旧
OneSignal.setSubscription(true)
新
OneSignal.disablePush(false)
旧
func onOSSubscriptionChanged(_ stateChanges: OSSubscriptionStateChanges!) {
if !stateChanges.from.status && stateChanges.to.subscribed {
print("Subscribed for OneSignal push notifications!")
// get player ID
stateChanges.to.userId
print(userID)
print("************************")
}
print("SubscriptionStateChange: \n\(stateChanges)")
}
新
func onOSPermissionChanged(_ stateChanges: OSPermissionStateChanges!) {
// Example of detecting answering the permission prompt
if stateChanges.from.status == OSNotificationPermission.notDetermined {
if stateChanges.to.status == OSNotificationPermission.authorized {
let deviceState = OneSignal.getDeviceState()
let userID = deviceState?.userId
print(userID)
print("************************")
print("Thanks for accepting notifications!")
} else if stateChanges.to.status == OSNotificationPermission.denied {
print("Notifications not accepted. You can turn them on later under your iOS settings.")
}
}
// prints out all properties
print("PermissionStateChanges: \n\(stateChanges)")
}
您也可以像这样拉取 Users OneSignal 信息
let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState()
// Push Status Methods
let hasPrompted = status.permissionStatus.hasPrompted
print("hasPrompted: ", hasPrompted)
let userStatus = status.permissionStatus.status
print("userStatus: ", userStatus)
let isSubscribed = status.subscriptionStatus.subscribed
print("isSubscribed: ", isSubscribed)
let userSubscriptionSetting = status.subscriptionStatus.userSubscriptionSetting
print("userSubscriptionSetting: ", userSubscriptionSetting)
if let userID = status.subscriptionStatus.userId{
print("userID: ", userID)
}
if let pushToken = status.subscriptionStatus.pushToken {
print("pushToken: ", pushToken)
}
// Email Status Methods
if let emailPlayerId = status.emailSubscriptionStatus.emailUserId {
print("emailPlayerId: ", emailPlayerId)
}
if let emailAddress = status.emailSubscriptionStatus.emailAddress {
print("emailAddress: ", emailAddress)
}
let isEmailSubscribed = status.emailSubscriptionStatus.subscribed
print("isEmailSubscribed: ", isEmailSubscribed)
OneSignal 文档错误
// START OneSignal initialization code
let onesignalInitSettings = [kOSSettingsKeyAutoPrompt: false, kOSSettingsKeyInAppLaunchURL: false]
// Replace 'YOUR_ONESIGNAL_APP_ID' with your OneSignal App ID.
OneSignal.initWithLaunchOptions(launchOptions,
appId: "KEY",
handleNotificationAction: nil,
settings: onesignalInitSettings)
OneSignal.inFocusDisplayType = OSNotificationDisplayType.notification;
//END OneSignal initializataion code
这可能会帮助您获得新的 OneSignal 使用。我刚刚将我的SDK更新到3.1.0,我不得不改变一些点:
新初始化:Link1
import UIKit
import OneSignal
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Remove this method to stop OneSignal Debugging
OneSignal.setLogLevel(.LL_VERBOSE, visualLevel: .LL_NONE)
// OneSignal initialization
OneSignal.initWithLaunchOptions(launchOptions)
OneSignal.setAppId("YOUR_ONESIGNAL_APP_ID")
// promptForPushNotifications will show the native iOS notification permission prompt.
// We recommend removing the following code and instead using an In-App Message to prompt for notification permission (See step 8)
OneSignal.promptForPushNotifications(userResponse: { accepted in
print("User accepted notifications: \(accepted)")
})
return true
}
// Remaining contents of your AppDelegate Class...
}
并且在范围内:Link2
if let deviceState = OneSignal.getDeviceState() {
let userId = deviceState.userId
let pushToken = deviceState.pushToken
let subscribed = deviceState.isSubscribed
}
编辑: 我认为您选择的代码来自此 link 就在楼下,它说新的初始化是:
替换为以下内容
// OneSignal initialization
OneSignal.initWithLaunchOptions(launchOptions)
OneSignal.setAppId("YOUR_ONESIGNAL_APP_ID")