The answer to this follows directly from the definitions of synonymous and non-synonymous SNPs. To be a synonymous or a non-synonymous SNP, the SNP must fall inside a protein-coding region of the DNA (otherwise it is a noncoding SNP). A synonymous SNP is a coding SNP that does not change the protein sequence. A non-synonymous SNPT is one that changes the protein sequence. So what you have to check is if the SNP changes a codon to a different codon for the same amino acid, in which case it is a synonymous SNP, or if it changes the codon to one that codes for a different amino acid, in which case it is a non-synonymous SNP.
A SNP can change a splice site and that would change the resulting protein translation.
There can also be a situation where a SNP will be synonymous for one transcript isoform and nonsysnonymous for a different mRNA isoform. This could easily be true for genes transcribed from opposing strands.