STEP 1:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
{
requestUserPermissions(application: application)
if let notification = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? [String: AnyObject]
{
let info : NSDictionary! = notification as NSDictionary
if info != nil
{
getDataFromNotification(userInfo: info as! [AnyHashable : Any])
Alert.showAlert((self.window?.rootViewController)!, message: "App is terminated", strtitle: "Notification")
}
}
return true
}
ステップ2:
func requestUserPermissions(application: UIApplication)
{
if #available(iOS 10.0, *)
{
let center = UNUserNotificationCenter.current()
center.delegate = self
center.requestAuthorization(options:[.badge, .alert, .sound])
{
(granted, error) in
if(!(error != nil))
{
application.registerForRemoteNotifications()
}
// Enable or disable features based on authorization.
}
}
else {
// Fallback on earlier versions
if (!application.isRegisteredForRemoteNotifications)
{
application.applicationIconBadgeNumber = 0
application.registerForRemoteNotifications()
}
}
ステップ3:
@objc(userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:) @available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void)
{
print("Userinfo1 \(response.notification.request.content.userInfo)")
getDataFromNotification(userInfo: response.notification.request.content.userInfo)
Alert.showAlert((self.window?.rootViewController)!, message: "I am in Background", strtitle: "Notification")
}
@objc(userNotificationCenter:willPresentNotification:withCompletionHandler:) @available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
print("Userinfo2 \(notification.request.content.userInfo)")
getDataFromNotification(userInfo: notification.request.content.userInfo)
Alert.showAlert((self.window?.rootViewController)!, message: "I am in forground", strtitle: "Notification")
}
ステップ4:
func getDataFromNotification(userInfo: [AnyHashable : Any])
{
let info : NSDictionary! = userInfo as NSDictionary
if info != nil
{
if let aps = info["aps"] as? NSDictionary
{
if let resultsDict = aps as? [String:AnyObject]
{
for _ in resultsDict
{
let str = dictCleanData.value(forKey: "alert")!
let time = dictCleanData.value(forKey: "day")!
let dict = ["msg" : str, "time": time]
UserDefaults.standard.set(dict, forKey: "dict")
UserDefaults.standard.synchronize()
}
}
}
}
}
STEP 5:他のビューコントローラあなたが店の利用者に関する情報にNSUserDefaults
を使用することができます私の意見で
override func viewDidLoad()
{
super.viewDidLoad()
if UserDefaults.standard.value(forKey: "dict") != nil
{
let dict : NSDictionary = UserDefaults.standard.value(forKey: "dict") as! NSDictionary
arr_Veges.add(dict)
if UserDefaults.standard.value(forKey: "arr_Veges") != nil
{
let arr = UserDefaults.standard.value(forKey: "arr_Veges") as! NSArray
for oldObj in arr
{
arr_Veges.add(oldObj)
}
}
UserDefaults.standard.set(arr_Veges, forKey: "arr_Veges")
UserDefaults.standard.synchronize()
}
}
プッシュ通知を開くことなく処理することはできません。私のアドバイスは、あなたのサーバー上の各デバイスに通知を送信し続ける代わりに – xmhafiz
@ h44f33z他の方法で私はUserDefualtまたはCoreDateに届いた通知を保存できますか? – iParesh
私にとって、「どこで」保存するのではなく、受け取った通知を開くまでプッシュ通知をチェックすることはできません。また、3つの通知のうちの1つを開くと、開いたものだけを取得できます。残りのものは内容を取得しません。 – xmhafiz