An uplink channel transmission method, wherein the method is applied to a communications system comprising a network device and a terminal device (116, 122), a system frequency domain resource used by the communications system is divided into N subbands, N≥2, the system frequency domain resource is a frequency domain resource used based on a contention mechanism, and the method comprises: receiving, by the terminal device, scheduling information from the network device, wherein the scheduling information is used to indicate uplink time-frequency resources that are used to carry at least one uplink channel and that are allocated by the network device to the terminal device, a first uplink time-frequency resource in the uplink time-frequency resources is used to carry a first uplink channel in the at least one uplink channel, and the first uplink time-frequency resource is M subbands in the N subbands in frequency domain, N≥M≥2; perform contention or monitoring before uplink transmission, by the terminal device, on the M subbands, to determine a second uplink time-frequency resource that is available to be used by the terminal device, wherein the second uplink time-frequency resource is K subbands in the M subbands in frequency domain, M>K≥1, and wherein the contention or monitoring comprises listen before transmit or clear channel assessment; and sending, by the terminal device, the first uplink channel by using the second uplink time-frequency resource; and wherein the sending, by the terminal device, the first uplink channel by using the second uplink time-frequency resource comprises: determining, by the terminal device, a first uplink transport block size TBS based on a size of the first uplink time-frequency resource; and sending, by the terminal device, the first uplink channel to the network device based on the first uplink TBS by using the second uplink time-frequency resource. receiving, by the terminal device, scheduling information from the network device, wherein the scheduling information is used to indicate uplink time-frequency resources that are used to carry at least one uplink channel and that are allocated by the network device to the terminal device, a first uplink time-frequency resource in the uplink time-frequency resources is used to carry a first uplink channel in the at least one uplink channel, and the first uplink time-frequency resource is M subbands in the N subbands in frequency domain, N≥M≥2; perform contention or monitoring before uplink transmission, by the terminal device, on the M subbands, to determine a second uplink time-frequency resource that is available to be used by the terminal device, wherein the second uplink time-frequency resource is K subbands in the M subbands in frequency domain, M>K≥1, and wherein the contention or monitoring comprises listen before transmit or clear channel assessment; and sending, by the terminal device, the first uplink channel by using the second uplink time-frequency resource; and wherein the sending, by the terminal device, the first uplink channel by using the second uplink time-frequency resource comprises: determining, by the terminal device, a first uplink transport block size TBS based on a size of the first uplink time-frequency resource; and sending, by the terminal device, the first uplink channel to the network device based on the first uplink TBS by using the second uplink time-frequency resource. determining, by the terminal device, a first uplink transport block size TBS based on a size of the first uplink time-frequency resource; and sending, by the terminal device, the first uplink channel to the network device based on the first uplink TBS by using the second uplink time-frequency resource.