我開發了一個不久前使用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系統?
如果另一個用戶在同一個應用程序中登錄,那麼userId的值是什麼?它會改變還是一樣? –
根據我的理解,用戶ID將在玩家賬戶更改時發生變化。這意味着如果用戶從同一設備登錄到不同的帳戶,它將作爲單獨的用戶ID計數。 –
因此,我建議您還要跟蹤設備ID,以便您可以將通知發送到同一設備的所有播放器ID。 (這是我所做的) –