Do `Provide` need to be called after pinning IPLD from core API?


I created an IPLD plugin that can create a dag-cbor (0x71) IPLD object.

And I pin it using CoreAPI interface as follow:

import (

    custom "<plugin location>"
    icore ""

func PinCustomIPLD(ctx context.Context, ipfs icore.CoreAPI, content string) {
    ipld, _ := custom.NewCustomIPLD(content)
    ipfs.Dag().Pinning().Add(ctx, ipld)

    coreAPI, _ = ipfs.(*coreapi.CoreAPI)
    providerAPI = (*coreapi.ProviderAPI)(coreAPI)

Do the Provide function need to be called?

When I first-time tried to pin the IPLD object, the public gateway (such as can only discover it after a few hours
Then I tried to add the Provide function, it seems also need to wait an hour to discover

Do I missing something so that the public gateway need to use a very long time to discover the content?