2017-07-27 111 views
0

我已經在我的應用程序中集成了推送通知。我在AppDelegate中獲取設備令牌並將其發送到我的LoginViewController中的服務器。如果用戶點擊「不允許」時警報來了,我不打電話給我的設備註冊服務。但我不知道如何處理這種情況。如何處理推送通知允許從iOS中的設置

如果用戶點擊不推送通知警報允許去裏面的應用程序,然後打開他的設備設置並啓用推送通知。

在這種情況下,我該如何撥打我的設備註冊服務? 請幫我 感謝

+0

設備註冊方法將在您每次註冊應用程序進行通知時被調用。因此,設置更改後,當您再次啓動應用程序並註冊接收通知時,該方法將被調用。 – lostInTransit

+0

@lostInTransit謝謝。如果用戶改變設置並重新打開應用程序,當它從後臺到前臺時,那麼它也可以註冊? – user1960169

+0

你將不得不確保你調用'registerForRemoteNotifications'方法 – lostInTransit

回答

-1

在AppDelegate中

如果用戶允許的通知,該令牌將在FUNC波紋管返回,你會打電話給你的服務,發送到您的服務器

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
} 

如果用戶唐「T允許通知,您將在FUNC收到錯誤波紋管

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { 

} 
+0

是我在我提到的場景中提出的問題..然後如何獲得通知,並關閉並重新打開應用程序,因爲我沒有收到我的服務設備註冊服務,因爲用戶didnt允許當它提示 – user1960169

+0

當您打開應用程序,你在真實的設備FUNC didRegisterForRemoteNotificationsWithDeviceToken送花兒給人reviece令牌, 您將發送令牌到你的服務器, 當你發送通知給用戶,設備車展的通知,如果用戶允許notificaion和意志不顯示,如果用戶不通知 –

3

其實沒有delega請注意,用戶更改了推送通知的狀態。

但是可以通過使用這種方法在applicationDidBecomeActive:方法檢查這樣

目標C:

的iOS 8及以上

if (![[UIApplication sharedApplication] isRegisteredForRemoteNotifications]){ 
     NSLog(@"push notifications are disabled"); 
} 

對於iOS 10

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 

if (types == UIRemoteNotificationTypeNone) { 
    NSLog(@"push notifications are disabled"); 
} 

夫特:

的iOS 8及以上

let isRegisteredForRemoteNotifications = UIApplication.shared.isRegisteredForRemoteNotifications 
if isRegisteredForRemoteNotifications { 
    NSLog(@"push notifications are enabled"); 
} else { 
    NSLog(@"push notifications are disabled"); 
} 

對於iOS 10

let current = UNUserNotificationCenter.current() 

current.getNotificationSettings(completionHandler: { (settings) in 

    if settings.authorizationStatus == .denied { 
    NSLog(@"push notifications are disabled"); 
    } 
}) 

希望它能幫助。

0

在設置的任何更改重新啓動應用程序。 so如果用戶打開來自設置的通知,則應用程序將重新啓動,您將在app-delegate中獲取設備令牌,並且可以將其發送到您的服務器。如果您的登錄名保存在本地,並且您在登錄api中發送device_token,則需要使用單獨的服務將device_token發送到服務器。

+0

但是,當我打開應用程序,並更改設置仍然在後臺運行。似乎不重新啓動 – user1960169