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

Convert APNs tokens to Firebase registration tokens #664

Open
halaei opened this issue Oct 19, 2021 · 13 comments
Open

Convert APNs tokens to Firebase registration tokens #664

halaei opened this issue Oct 19, 2021 · 13 comments

Comments

@halaei
Copy link

halaei commented Oct 19, 2021

Describe the feature you would like to see

I just wondering if you find it fit to add batchImport method to this library. The API converts APNs tokens to Firebase tokens. I hope it will be a handy feature for iOS app developers, since the iOS devices give us APNs tokens instead of Firebase messaging tokens, which need to be converted in server side.

The API reference: https://developers.google.com/instance-id/reference/server#create_registration_tokens_for_apns_tokens

Using the Instance ID service's batchImport method, you can bulk import existing iOS APNs tokens to Google Cloud Messaging or Firebase Cloud Messaging, mapping them to valid registration tokens. Call the Instance ID service at this endpoint, providing a list of APNs tokens in the JSON body:
https://iid.googleapis.com/iid/v1:batchImport
The response body contains an array of Instance ID registration tokens ready to be used for sending FCM or GCM messages to the corresponding APNs device token.

@github-actions
Copy link
Contributor

There hasn't been any activity on this issue recently, and in order to prioritize active issues, it will be marked as stale. Please make sure to update to the latest version and check if that solves the issue. Let me know if that works for you by leaving a 👍. Because this issue is marked as stale, it will be closed and locked in 7 days if no further activity occurs. Thank you for your contributions!

@ni3k
Copy link

ni3k commented Feb 10, 2023

I already have an implementation for this method, I could add it to the package if it is still needed/desired

@romk1n
Copy link

romk1n commented Mar 11, 2024

That would be great.

@williamdes
Copy link

I already have an implementation for this method, I could add it to the package if it is still needed/desired

That would help

Here is my lines to get it working

use GuzzleHttp\RequestOptions;
use Kreait\Firebase\Factory;

        $factory = new Factory();
        $factory = $factory->withServiceAccount(config('firebase.projects.app.credentials'));
        $googleApiClient = $factory->createApiClient([
            'base_uri' => 'https://iid.googleapis.com',
            'headers' => [
                'access_token_auth' => 'true',
                'User-Agent' => 'Custom UA',
            ],
        ]);

        $request = [
            RequestOptions::JSON => [
                'application' => $appId,
                'sandbox' => $sandboxMode,
                'apns_tokens' => [
                    $apnsToken,
                ],
            ],
        ];

        Context::merge([
            'request' => $request,
        ]);

        $response = $googleApiClient->post('/iid/v1:batchImport', $request);

@ni3k
Copy link

ni3k commented Jun 25, 2024

Hi, the insance id api will be deprecated at the end of this month so I think it's safe to close this issue, afaik the new api does not support converting apns tokens to firebase anymore

@williamdes
Copy link

Hi, the insance id api will be deprecated at the end of this month so I think it's safe to close this issue, afaik the new api does not support converting apns tokens to firebase anymore

Please cite your sources, all the Google docs I checked and topics indicated this API will not be deprecated

@jeromegamez
Copy link
Member

jeromegamez commented Jun 25, 2024

The Instance ID API is deprecated. If you need to access unique app installation identifiers, use the Firebase installations API. See also Firebase installations and Instance ID.

https://developers.google.com/instance-id/reference/server

But I don't see right now that/how it impacts Admin SDKs. For the time being I think we're safe, as far as I can see, this mainly affects Client SDKs.

it seems the new concept of "Firebase Installation Identifier" is equivalent to FCM Registration Tokens, and it provides "just" a method to delete FIDs.

https://firebase.google.com/docs/reference/admin/node/firebase-admin.installations.installations

in the context of Admin SDKs (not this one, yet), deleting FIDs has a caveat:

When you delete an Firebase installation ID with a server API call, Firebase services start the process to delete the data tied to that installation ID, stop accepting new data for that ID over the course of 1-2 days, and then notify the client app that the ID was deleted. Until Firebase notifies the client app, some of

the app's services might still target the ID—for example, a Firebase installation might continue to receive FCM notifications for a few hours.

If you want to delete the current Firebase installation ID and immediately use Firebase services with a new, unrelated ID, use the client API to handle the deletion.

https://firebase.google.com/docs/projects/manage-installations

So, deleting FIDs seems to be best handled on-device.

@jeromegamez
Copy link
Member

As for the feature to convert APNS tokens to Firebase Registration IDs, this is something I cannot test, so I would have to implement it blindly. It's possible, but I would need people testing this on their projects for me.

@ni3k
Copy link

ni3k commented Jun 25, 2024

Hi, the insance id api will be deprecated at the end of this month so I think it's safe to close this issue, afaik the new api does not support converting apns tokens to firebase anymore

Please cite your sources, all the Google docs I checked and topics indicated this API will not be deprecated

The Instance ID API is deprecated. If you need to access unique app installation identifiers, use the Firebase installations API. See also Firebase installations and Instance ID.

https://developers.google.com/instance-id/reference/server

@williamdes
Copy link

Okay, well here is my source: https://firebase.google.com/support/faq?hl=fr#fcm-23-deprecation

https://iid.googleapis.com/iid/* The endpoints will continue to work but they won't support authentication using static server keys after 6/21/2024.

At work, the endpoint works fine with the new auth

@williamdes
Copy link

As for the feature to convert APNS tokens to Firebase Registration IDs, this is something I cannot test, so I would have to implement it blindly. It's possible, but I would need people testing this on their projects for me.

For sure, batch import as coded in my example can be a starting point. For sure I will do my best to try new implementations

@jeromegamez
Copy link
Member

Indeed, this SDK doesn't use static server keys, so you should be fine 💪🏻

@williamdes
Copy link

Could batch import be added?
it seems like the SDK already has part of the logic of #664 (comment)

By the way, is there some config to set the user agent globally?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants