[英]Device Token and Push Notification
我正在嘗試將推送通知應用到我的應用程序中,但我相信,我可能是一個愚蠢的問題。 我的推送通知有效,但它們有效,因為我將設備令牌放入服務器上的asp.net代碼中。
我的問題是,我應該跟蹤我的應用獲得的設備令牌嗎? 換句話說,當應用程序啟動並且我獲得設備令牌時,我是否需要將它們發送到我的服務器並存儲它們以便當我需要向我的應用程序的所有用戶發送通知時我可以通過列表令牌並將通知發送到每個設備令牌?
感謝您提供的任何清晰度,因為您猜到這是我第一次嘗試Push Notifications。
您必須將設備令牌存儲在數據庫中。 然后,您發送一個發送到每個設備令牌的通知。 您可以自己創建系統,但是已經有這樣做的開源庫。 雖然它適用於PHP,但Easy APNS就是一個例子。
我自己會遇到這種情況,因為事實證明硬編碼設備令牌是限制可以發送推送通知的設備的一種方法但是如果你想允許任何下載你的應用程序的設備你需要創建一個機制來發送將設備的設備令牌發送到您的服務器,以便向其發送推送通知。 您可以在應用程序加載時將此請求設置到您的服務器,在我的情況下,默認成功並且在失敗時讓用戶知道他們沒有添加到通知列表中。
這是一個創建聊天程序的raywenderlich.com的例子。 - 基本上他們正在創建一個帶有設備信息的發布請求,他們將這些信息存儲在數據庫中,然后訪問數據庫信息以進行迭代並發送通知。
一些相關代碼:
- (void)postJoinRequest
{
MBProgressHUD* hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.labelText = NSLocalizedString(@"Connecting", nil);
NSURL* url = [NSURL URLWithString:ServerApiURL];
__block ASIFormDataRequest* request = [ASIFormDataRequest requestWithURL:url];
[request setDelegate:self];
[request setPostValue:@"join" forKey:@"cmd"];
[request setPostValue:[dataModel udid] forKey:@"udid"];
[request setPostValue:[dataModel deviceToken] forKey:@"token"];
[request setPostValue:[dataModel nickname] forKey:@"name"];
[request setPostValue:[dataModel secretCode] forKey:@"code"];
[request setCompletionBlock:^
{
if ([self isViewLoaded])
{
[MBProgressHUD hideHUDForView:self.view animated:YES];
if ([request responseStatusCode] != 200)
{
ShowErrorAlert(NSLocalizedString(@"There was an error communicating with the server", nil));
}
else
{
[self userDidJoin];
}
}
}];
[request setFailedBlock:^
{
if ([self isViewLoaded])
{
[MBProgressHUD hideHUDForView:self.view animated:YES];
ShowErrorAlert([[request error] localizedDescription]);
}
}];
[request startAsynchronous];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.