A very good friend continually cancelled on me last minute. I withdrew slightly from the friendship and stopped making any arrangements to meet up and it became very text-based. After some months she flat out asked me if she'd upset me, so I told her. She said she totally understood, had been a shit friend, was very upset she'd upset me and promised to get things back to where they were and would make more effort as she valued my friendship hugely.
It fell back into precisely the same pattern. On my birthday, I invited a couple of people out for drinks, including her. A mutual friend said "why did you bother, you know she will cancel?" And sure enough, half an hour before, she cancelled.
It was always work - she was single with no children - and while I appreciate her job could be like that, when it happens to you continually, and yet other people don't seem to be so unlucky, you pretty much assume they don't really want to be bothered with you.
A present was delivered to my office the next day but I was pissed off. I cut her out totally and utterly. I didn't explain why. It should have been self evident having already explained previously.
Bumped into her 18 months later and exchanged a few pleasantries. She wasn't happy about life. I reached out to her by text that night. Suffice it to say that since then, our friendship has been the strongest it has ever been, she has never cancelled anything since, has been there for me through thick and thin - when other friends who I would have considered closer weren't - and is now very much my best friend.
So you never know which method is best or what the result may be.