Exemple #1
0
        /// <summary>
        /// Calls <seealso cref="EngagementAgent#registerNativePush(EngagementNativePushToken)"/> only if the token
        /// is a new one or some time has elapsed since the last time we sent it. </summary>
        /// <param name="token"> token to register. </param>
        public virtual void registerNativePush(EngagementNativePushToken token)
        {
            /* If application identifier is unknown */
            if (mAppId == null)
            {
                /*
                 * Keep state until onAppIdGot is called. Possibly in the next application launch so it must
                 * be persisted.
                 */
                SharedPreferences.Editor edit = mStorage.edit();
                edit.putString(NEW_TOKEN_VALUE, token.Token);
                edit.putInt(NEW_TOKEN_TYPE, token.getType().ordinal());
                edit.commit();
            }
            else
            {
                /* Get state */
                string oldAppId      = mStorage.getString(APP_ID, null);
                string oldTokenValue = mStorage.getString(TOKEN_VALUE, null);
                EngagementNativePushToken.Type oldType = EngagementNativePushToken.typeFromInt(mStorage.getInt(TOKEN_TYPE, -1));
                long sent             = mStorage.getLong(SENT, 0);
                long elapsedSinceSent = DateTimeHelperClass.CurrentUnixTimeMillis() - sent;

                /* If registrationId changed or enough time elapsed since we sent it */
                if (oldAppId == null || !oldAppId.Equals(mAppId) || oldTokenValue == null || !oldTokenValue.Equals(token.Token) || oldType == null || !oldType.Equals(token.getType()) || elapsedSinceSent >= SENT_EXPIRY)
                {
                    /* Send registration identifier */
                    mEngagementAgent.registerNativePush(token);

                    /* Update state */
                    SharedPreferences.Editor edit = mStorage.edit();
                    edit.clear();
                    edit.putString(APP_ID, mAppId);
                    edit.putString(TOKEN_VALUE, token.Token);
                    edit.putInt(TOKEN_TYPE, token.getType().ordinal());
                    edit.putLong(SENT, DateTimeHelperClass.CurrentUnixTimeMillis());
                    edit.commit();
                }
            }
        }
	  /// <summary>
	  /// Calls <seealso cref="EngagementAgent#registerNativePush(EngagementNativePushToken)"/> only if the token
	  /// is a new one or some time has elapsed since the last time we sent it. </summary>
	  /// <param name="token"> token to register. </param>
	  public virtual void registerNativePush(EngagementNativePushToken token)
	  {
		/* If application identifier is unknown */
		if (mAppId == null)
		{
		  /*
		   * Keep state until onAppIdGot is called. Possibly in the next application launch so it must
		   * be persisted.
		   */
		  SharedPreferences.Editor edit = mStorage.edit();
		  edit.putString(NEW_TOKEN_VALUE, token.Token);
		  edit.putInt(NEW_TOKEN_TYPE, token.getType().ordinal());
		  edit.commit();
		}
		else
		{
		  /* Get state */
		  string oldAppId = mStorage.getString(APP_ID, null);
		  string oldTokenValue = mStorage.getString(TOKEN_VALUE, null);
		  EngagementNativePushToken.Type oldType = EngagementNativePushToken.typeFromInt(mStorage.getInt(TOKEN_TYPE, -1));
		  long sent = mStorage.getLong(SENT, 0);
		  long elapsedSinceSent = DateTimeHelperClass.CurrentUnixTimeMillis() - sent;

		  /* If registrationId changed or enough time elapsed since we sent it */
		  if (oldAppId == null || !oldAppId.Equals(mAppId) || oldTokenValue == null || !oldTokenValue.Equals(token.Token) || oldType == null || !oldType.Equals(token.getType()) || elapsedSinceSent >= SENT_EXPIRY)
		  {
			/* Send registration identifier */
			mEngagementAgent.registerNativePush(token);

			/* Update state */
			SharedPreferences.Editor edit = mStorage.edit();
			edit.clear();
			edit.putString(APP_ID, mAppId);
			edit.putString(TOKEN_VALUE, token.Token);
			edit.putInt(TOKEN_TYPE, token.getType().ordinal());
			edit.putLong(SENT, DateTimeHelperClass.CurrentUnixTimeMillis());
			edit.commit();
		  }
		}
	  }