简体   繁体   English

iOS在生产环境中没有收到推送通知

[英]IOS not getting Push Notifications in production environment

I am tired of looking for the problem, I am not getting Push Notifications in production environment after uploading to App store. 我厌倦了寻找问题,将其上传到App Store后在生产环境中没有收到推送通知。 I tried all possible ways i heard on the net but with no chance I am getting the below error in APNS: 我尝试了网上听到的所有可能方式,但是没有机会在APNS中遇到以下错误:

10:06:09: preparing to send payload... 10:06:09: trying to connect.... 10:06:09: Connected.... 10:06:10: Sent & Disconnected....! 10:06:09:正在准备发送有效载荷... 10:06:09:正在尝试连接...... 10:06:09:已连接...... 10:06:10:已发送并已断开连接... ! 10:06:20: None (unknown) and sometimes I am getting (Invalid Token) 10:06:20:无(未知),有时我收到(无效令牌)

Push Notifications is working very well on developer mode, but not working at all when archiving it. 推送通知在开发人员模式下运行良好,但在存档时根本无法工作。

On other hand below is my AppDelegate code: 另一方面是我的AppDelegate代码:

var window: UIWindow?
var settings: UNNotificationSettings?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]) -> Bool {
    // Override point for customization after application launch.
    // iOS 10 support

    FirebaseApp.configure()

    if #available(iOS 10.0, *) {
        // For iOS 10 display notification (sent via APNS)
        UNUserNotificationCenter.current().delegate = self

        let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(
            options: authOptions,
            completionHandler: {_, _ in })
    } else {
        let settings: UIUserNotificationSettings =
            UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
    }

    application.registerForRemoteNotifications()

    NotificationCenter.default.addObserver(self, selector: #selector(self.tokenRefreshNotification),
                                          name:   NSNotification.Name.InstanceIDTokenRefresh, object: nil)
 return true
}
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
    completionHandler([.alert, .badge, .sound])
}

func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
    print("Firebase registration token: \(fcmToken)")
}

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { print(error) } func应用程序(应用程序:UIApplication,didFailToRegisterForRemoteNotificationsWithError错误:NSError){打印(错误)}

func application(application: UIApplication,  didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
                 fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {

    // Let FCM know about the message for analytics etc.
    Messaging.messaging().appDidReceiveMessage(userInfo)

    // Print message ID.


    // Print full message.
    print("userInfo: \(userInfo)")

    completionHandler(.noData)
}
func registerForPushNotifications() {
    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) {
        (granted, error) in
        print("Permission granted: \(granted)")

        guard granted else { return }
        self.getNotificationSettings()
    }
}
func getNotificationSettings() {
    UNUserNotificationCenter.current().getNotificationSettings { (settings) in
        print("Notification settings: \(settings)")
        guard settings.authorizationStatus == .authorized else { return }
        UIApplication.shared.registerForRemoteNotifications()
    }
}
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask(rawValue:     UIInterfaceOrientationMask.portrait.rawValue)
}
func tokenRefreshNotification(notification: NSNotification) {
    if let refreshedToken = InstanceID.instanceID().token() {
        print("InstanceID token: \(refreshedToken)")

        // Subscribe to a topic after got a FCM Registration token
        Messaging.messaging().subscribe(toTopic: "/topics/coffee")
    }

    // Connect to FCM since connection may have failed when attempted      before having a token.
    connectToFCM()
}
// [END refresh_token]

// [START connect_to_fcm]
func connectToFCM() {
    Messaging.messaging().connect { (error) in
        if (error != nil) {
            print("Unable to connect with FCM. \(error)")
        } else {
            print("Connected to FCM.")
        }
    }
}
// [END connect_to_fcm]

func applicationDidBecomeActive(application: UIApplication) {
    connectToFCM()
}

// [START disconnect_from_fcm]
func applicationDidEnterBackground(application: UIApplication) {
    Messaging.messaging().disconnect()
    print("Disconnected from FCM.")
}

} }

You need to check PHP side for Push notification.Production environment you can't check push notification at your side, you need to trigger from server side - 您需要在PHP端检查Push通知。生产环境无法在您的端检查push通知,您需要从服务器端进行触发-

Development Server - 开发服务器-

ssl://gateway.sandbox.push.apple.com:2195

Production Server - 生产服务器-

ssl://gateway.push.apple.com:2195


if you will face any issue with the port you can try with - 如果您遇到端口问题,可以尝试-

  • 2195 2195
  • 2196 2196

More details - Check this link 更多详细信息- 检查此链接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM