Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

register Callback in PushNotifications Plugin Fails to Trigger Registration or Error Listeners #2242

Open
Grifting opened this issue Nov 12, 2024 · 0 comments
Labels

Comments

@Grifting
Copy link

Plugin(s)

@capacitor/push-notifications: ^6.0.2

Capacitor Version

@capacitor/cli: ^6.1.2
@capacitor/core: ^6.1.2
@capacitor/ios: ^6.1.2
@capacitor/push-notifications: ^6.0.2

Platform(s)

iOS only

Current Behavior

When calling PushNotifications.register() on an iOS device, neither the registration nor registrationError listeners are triggered. No token or error feedback is returned, despite APNs being configured in the Apple Developer Portal, necessary permissions enabled in Xcode, and no apparent errors in the console log.

Expected Behavior

After invoking PushNotifications.register(), we expect either the registration listener to provide the device token or the registrationError listener to handle errors, allowing us to proceed with or debug APNs registration.

Code Reproduction

The following setup was used to reproduce the issue.

AppDelegate.swift:
import UIKit
import Capacitor

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
// default functions

// Added the functions to handle APNs registration callbacks  
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {  
    return true  
}  

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {  
    NotificationCenter.default.post(name: .capacitorDidRegisterForRemoteNotifications, object: deviceToken)  
}  

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {  
    NotificationCenter.default.post(name: .capacitorDidFailToRegisterForRemoteNotifications, object: error)  
}  

}

PushNotificationService.ts:
import { Capacitor } from “@capacitor/core”;
import { PushNotifications } from “@capacitor/push-notifications”;
import axios from “axios”;

class PushNotificationService {
private client = axios;
private apiRoot = ‘/apns’;

public async setup() {  
    await this.setupListeners();  

    if (Capacitor.getPlatform() !== 'ios') return;  

    const result = await PushNotifications.requestPermissions();  
    console.log("RESULTS: ", result)
    if (result.receive === 'granted') {  
        await PushNotifications.register();  
    }  
}  

private async setupListeners() {  
    await PushNotifications.addListener('registration', (token) => {  
        console.log('Token registered', token.value);  
        this.sendTokenToBackend(token.value);  
    });  

    await PushNotifications.addListener('registrationError', (error) => {  
        console.log('Registration error:', error);  
    });  

    await PushNotifications.addListener('pushNotificationReceived', (notification) => {  
        console.log('Push notification received:', notification);  
    });  

    await PushNotifications.addListener('pushNotificationActionPerformed', (notification) => {  
        console.log('Push notification action performed:', notification);  
    });  
}  

private async sendTokenToBackend(token: string) {  
    try {  
        await this.client.post(`${this.apiRoot}/token`, { token });  
    } catch (error) {  
        console.error('Error sending token:', error);  
    }  
}  

}

export default new PushNotificationService();

Other Technical Details

•	Device: iPhone 14 Pro Max
•	iOS Version: 18.1
•	Xcode Version: 16.1

Additional Context

Testing has been conducted over USB with Xcode’s console. APNs and Push capabilities are active, and necessary permissions granted. No errors appear in the logs, but we have not observed any registration response.

Logs

⚡️ To Native -> PushNotifications addListener 62681458
⚡️ To Native -> PushNotifications addListener 62681459
⚡️ To Native -> PushNotifications addListener 62681460
⚡️ To Native -> PushNotifications addListener 62681461
⚡️ To Native -> PushNotifications requestPermissions 62681462
⚡️ TO JS {"receive":"granted"}
⚡️ To Native -> PushNotifications register 62681463
⚡️ [log] - RESULTS: {"receive":"granted"}
⚡️ [log] - Permission granted, registering for push notifications

@ionitron-bot ionitron-bot bot added the triage label Nov 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant