2017-03-10 81 views
1

我在我的項目中第一次使用onesignal。我必須發送通知給特定用戶(無論用戶在chrome還是android設備上登錄),例如whatsapp在移動設備和網站上發送通知,以及僅在用戶登錄時發送通知。我已成功向所有用戶發送通知用戶。在OneSignal上的一些R後,我知道我必須爲此發送通知給特定的playerId。但這裏有一些我的疑問/疑問。使用onesignal向特定用戶發送通知

  • 我認爲玩家ID是設備ID。如果我是對的,如果當前用戶註銷並且另一個用戶在同一設備上登錄,該怎麼辦?我怎麼才能知道我沒有在用戶改變的時候發送這個玩家ID的通知。
  • 單用戶會有多個playerIds嗎?一個用於Chrome,一個用於iOS設備,一個用於Android等?
  • 我將如何讓用戶的playerId存儲在我的數據庫中。因爲我必須使用server rest API發送通知。

如果任何人都可以解釋這些觀點,並且還描述了將數據庫中存儲playerid(何時以及如何)的工作流程,那麼我們將不勝感激。

回答

3

只需將playerIds存儲到數據庫並進行登錄活動即可。當他們註銷只是發起一個查詢有關從數據庫中刪除playerIds。

1

我開發了一個不久前使用OneSignal進行通知的android應用程序。這是用C#開發的,但可能對你有用。

我希望這些答案的幫助:

-The玩家ID由OneSignal類產生的,因此需要使用回調函數,如代碼所示以下檢索:

void CheckPushRegistration(){ 
    OneSignal.GetIdsAvailable(IdsAvailable); //Passes the 'callback' 

} 

private void IdsAvailable(string userID, string pushToken) { 
    player_id = userID; 
    player_token = pushToken; 

    //Make a request to my server to store this information along with device id 
    //For easy reference 
} 

注意:在上面的代碼中,我在應用程序運行開始時調用了函數'CheckPushRegistration'。一旦運行,它會將信息發送到'IdsAvailable'功能。在此之後,我向我的服務器發出一個快速Web請求,以存儲唯一的播放器ID,設備ID和令牌。

- 如果我沒有弄錯,玩家ID至少在android中基於與Google Play帳戶關聯的設備。意思是如果用戶切換帳戶,它將計數/充當不同的播放器ID(但我可能在這裏是錯誤的)

我假設OneSignal有一些確定瀏覽器/其他設備上播放器ID或用戶ID的方法。但是,假設它們將始終是唯一的,並且不會基於用戶帳戶進行傳輸。

- 如前所述,您通過向REST API發出簡單的Web請求將其存儲到數據庫中,僅存儲設備ID,播放器ID和令牌信息。也許添加一個檢查來查看設備ID是否已經不在系統中。我會建議使用設備ID來識別用戶。

您還問過如何知道通知是否正確發送,或者發送是否安全。不幸的是,OneSignal API只能報告通知狀態。

當您發送通知時,您將收到服務器返回的通知ID。您可以在稍後階段使用此功能來檢查通知是否已發送,是否已查看以及是否已點擊。

我希望這可以幫助我們瞭解OneSignal系統?

+0

如果另一個用戶在同一個應用程序中登錄,那麼userId的值是什麼?它會改變還是一樣? –

+0

根據我的理解,用戶ID將在玩家賬戶更改時發生變化。這意味着如果用戶從同一設備登錄到不同的帳戶,它將作爲單獨的用戶ID計數。 –

+0

因此,我建議您還要跟蹤設備ID,以便您可以將通知發送到同一設備的所有播放器ID。 (這是我所做的) –

相關問題