IEnumerator WaitSS() { // レイアウト設定のために1フレーム待つ yield return(new WaitForEndOfFrame()); Application.CaptureScreenshot("image.png"); // キャプチャを保存する処理として1フレーム待つ yield return(new WaitForEndOfFrame()); #if UNITY_ANDROID Debug.Log(Application.persistentDataPath); SocialConnector.Share( string.Format("Level{0}を{1}い〜くあるでクリア! {2}", m_iLevel, m_iScore, DefineProject.TWEET_MESSAGE_CLEAR) ); #elif UNITY_IPHONE //DefineProject.TWEET_MESSAGE_CLEAR, string strTest = string.Format("Level{0}を{1}い〜くあるでクリア! {2}", m_iLevel, m_iScore, DefineProject.TWEET_MESSAGE_CLEAR); SocialConnector.Share( strTest, "", Application.persistentDataPath + "/image.png" ); #endif }
IEnumerator startShare(string _strMessage, string _strImage) { //string filename = "screenshot.png"; string path = ""; switch (Application.platform) { case RuntimePlatform.IPhonePlayer: path = Application.persistentDataPath + "/" + _strImage; break; case RuntimePlatform.Android: path = Application.persistentDataPath + "/" + _strImage; break; default: path = Application.persistentDataPath + "/" + _strImage; break; } SocialConnector.Share( _strMessage, null, path ); m_bShareEnd = true; yield return(0); }
// シェアボタンを押したら void onShareButtonDown() { if (shareable) { Debug.Log("share"); string message = string.Format("Pen's Adventureで{0}点とりました。", ObstacleController.score); SocialConnector.Share(message, "#PensAdventure @PenPenDream", imagePath); shareable = false; } }
// Token: 0x0600049F RID: 1183 RVA: 0x00021210 File Offset: 0x0001F610 public IEnumerator SendSocial(string socialText, string socialURL, Texture2D sendTex, UIMaster ui) { ui.freezeUI(true); yield return(this.SaveTmpImage(sendTex)); this.SaveTmpImage(sendTex); yield return(new WaitForSeconds(1f)); SocialConnector.Share(socialText, socialURL, this.imagePath); ui.freezeUI(false); yield break; }
/// <summary> /// SNS共有処理コルーチン /// </summary> public IEnumerator _Share() { string imgPath = Application.persistentDataPath + "/image.png"; // 前回のデータを削除 File.Delete(imgPath); // 削除が完了するまで待機 while (true) { if (!File.Exists(imgPath)) { break; } yield return(null); } // スクリーンショットを取得 ScreenCapture.CaptureScreenshot("image.png"); // 撮影画像の書き込みが完了するまで待機 while (true) { if (File.Exists(imgPath)) { break; } yield return(null); } // 撮影画像の保存処理のため、1フレーム待機 yield return(new WaitForEndOfFrame()); // 投稿する string tweetText; if (Application.systemLanguage == SystemLanguage.Japanese) { tweetText = "マグネを" + score.ToString() + "個積みました!\n#マグネタワー\n【iOS/Android】\n"; // 日本語 } else { tweetText = "MagTower Score: " + score.ToString() + "\n#マグネタワー\n【iOS/Android】\n"; // 日本語以外 } string tweetURL = "【ツイートURL】"; SocialConnector.PostMessage(SocialConnector.ServiceType.Twitter, tweetText, tweetURL, imgPath); }
public IEnumerator Share() { //スクリーンショットを撮影 Application.CaptureScreenshot("image.png"); yield return(new WaitForEndOfFrame()); if (Application.platform == RuntimePlatform.Android) { text = "テスト"; URL = "特になし!"; } else if (Application.platform == RuntimePlatform.IPhonePlayer) { text = "テスト"; URL = "特になし!"; } yield return(new WaitForSeconds(1)); SocialConnector.Share(text, URL, imagePath); }
void OnGUI() { if (GUILayout.Button("<size=30><b>Take</b></size>", GUILayout.Height(60))) { ScreenCapture.CaptureScreenshot("image.png"); } GUILayout.Space(60); ///================= /// Share ///================= if (GUILayout.Button("<size=30><b>Share</b></size>", GUILayout.Height(60))) { SocialConnector.Share("Social Connector", "https://github.com/anchan828/social-connector", null); } if (GUILayout.Button("<size=30><b>Share Image</b></size>", GUILayout.Height(60))) { SocialConnector.Share("Social Connector", "https://github.com/anchan828/social-connector", imagePath); } }
/// <summary> /// キャプチャーの画像が作成されるまでまつ /// </summary> /// <returns>The image write waiting.</returns> /// <param name="imgPath">Image path.</param> /// <param name="message">Message.</param> IEnumerator CaptureImageWriteWaiting() { // レイアウト設定のために1フレーム待つ yield return(new WaitForEndOfFrame()); //写真撮影 Application.CaptureScreenshot(SCREENSHOTS + "/" + fileName); do { //Debug.Log ("Temporary ScreenShot hav not been written yet. " + GetImgPath + fileName); //書込み処理のために1フレーム待つ yield return(new WaitForEndOfFrame()); } while (!System.IO.File.Exists(GetImgPath + fileName)); // キャプチャを保存する処理として1フレーム待つ yield return(new WaitForEndOfFrame()); SocialConnector.Share(MESSAGE, URL, GetImgPath + fileName); isShoot = false; yield break; }
public abstract void UpdateSocialCredential(long clientId, SocialConnector connector, string element, string credential);
private string updateCredentialInXml(string credentials, SocialConnector connector, string element, string value) { if (string.IsNullOrEmpty(credentials)) credentials = "<socialconnector></socialconnector>"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(credentials); XmlElement elemSc = xmlDoc.FirstChild as XmlElement; //connector.ToString() XmlNodeList nl = elemSc.GetElementsByTagName(connector.ToString()); if (nl.Count == 0) { XmlElement elemCon = xmlDoc.CreateElement(connector.ToString()); XmlElement el = xmlDoc.CreateElement("key"); XmlAttribute attr = xmlDoc.CreateAttribute("name"); attr.Value = element; el.Attributes.Append(attr); attr = xmlDoc.CreateAttribute("value"); attr.Value = value; el.Attributes.Append(attr); elemCon.AppendChild(el); elemSc.AppendChild(elemCon); } else { XmlElement elem = nl[0] as XmlElement; if (elem != null) { XmlNodeList elemList = elem.GetElementsByTagName("key"); bool found = false; foreach (XmlNode node in elemList) { XmlElement el = node as XmlElement; if (el.HasAttributes && el.HasAttribute("name") && el.GetAttribute("name") == element) { found = true; el.SetAttribute("value", value); break; } } if (!found) { XmlElement el1 = xmlDoc.CreateElement("key"); XmlAttribute attr = xmlDoc.CreateAttribute("name"); attr.Value = element; el1.Attributes.Append(attr); attr = xmlDoc.CreateAttribute("value"); attr.Value = value; el1.Attributes.Append(attr); elem.AppendChild(el1); } } } return xmlDoc.OuterXml; }
/* Social connector credentials format example <socialconnector> <credentials id='twitter'> <key name='client_id' value='...'/> <key name='client_secret' value='...'/> <key name='access_token' value='...'/> </credentials> <credentials id='facebook'> <key name='client_id' value='...'/> <key name='client_secret' value='...'/> <key name='access_token' value='...'/> </credentials> <credentials id='soundcloud'> <key name='client_id' value='...'/> <key name='client_secret' value='...'/> <key name='access_token' value='...'/> </credentials> </socialconnector> */ private string getCredentialFromXml(string credentials, SocialConnector connector, string element) { XmlDocument doc = new XmlDocument(); doc.LoadXml(credentials); XmlElement elemSc = doc.FirstChild as XmlElement; if (elemSc != null) { XmlNodeList nl = elemSc.GetElementsByTagName(connector.ToString()); if (nl.Count == 0) return string.Empty; XmlElement elem = nl[0] as XmlElement; // If the element wasn't found we bail out with an empty string if (elem == null) return string.Empty; XmlNodeList elemList = elem.GetElementsByTagName("key"); // if there are no child elements, bail out with an empty string // search through the list for the specified child foreach (XmlNode node in elemList) { XmlElement el = node as XmlElement; if (el != null && (el.HasAttributes && el.HasAttribute("name") && el.GetAttribute("name") == element)) return el.GetAttribute("value"); } } return string.Empty; }
private string DeleteSocialAttributes(string credentials, SocialConnector connector) { string xmlString = string.Empty; int startIndex = 0; int endIndex = 0; switch (connector) { case SocialConnector.Facebook: startIndex = credentials.IndexOf("<Facebook>"); endIndex = credentials.IndexOf("</Facebook>"); credentials = credentials.Replace("</Facebook>", ""); break; case SocialConnector.Twitter: startIndex = credentials.IndexOf("<Twitter>"); endIndex = credentials.IndexOf("</Twitter>"); credentials = credentials.Replace("</Twitter>", ""); break; case SocialConnector.SoundCloud: startIndex = credentials.IndexOf("<SoundCloud>"); endIndex = credentials.IndexOf("</SoundCloud>"); credentials = credentials.Replace("</SoundCloud>", ""); break; } if (startIndex > -1 && endIndex > startIndex) xmlString = credentials.Remove(startIndex, endIndex - startIndex); else xmlString = credentials; return xmlString; }
private string deleteCredentialFromXml(string credentials, SocialConnector connector) { string xmlString = string.Empty; if (string.IsNullOrEmpty(credentials)) credentials = "<socialconnector></socialconnector>"; xmlString = DeleteSocialAttributes(credentials, connector); return xmlString; }
/* private XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlText); XmlElement elem = xmlDoc.GetElementById("twitter"); XmlNodeList elemList = elem.GetElementsByTagName("key"); foreach (XmlNode node in elemList) { XmlElement el = node as XmlElement; string val = el.GetAttribute(element); } */ public override void UpdateSocialCredential(long clientId, SocialConnector connector, string element, string credential) { // Here we know an element and a credential (value) // Now we have to add them to the existing credentials string accessCode = GetSocialAccessCode(clientId); string credentials = string.Empty; // First get the current credentials from the database using (MySqlConnection conn = new MySqlConnection(GetConnectionString())) using (MySqlCommand cmd = new MySqlCommand(QRY_GET_SOCIAL_ACCESS_CRED, conn)) { cmd.Parameters.Add("@client_id", MySqlDbType.Int64).Value = clientId; try { conn.Open(); object obj = cmd.ExecuteScalar(); if (obj != null) { string credEncrypted = obj as string; if (!string.IsNullOrEmpty(credEncrypted)) credentials = Crypto.Decrypt(credEncrypted, accessCode); } } catch (Exception ex) { Logger.Instance.Write(LogLevel.Error, ex, "GetSocialCredentials"); } finally { conn.Close(); } } credentials = updateCredentialInXml(credentials, connector, element, credential); string credentialsEncrypted = Crypto.Encrypt(credentials, accessCode); using (MySqlConnection conn = new MySqlConnection(GetConnectionString())) using (MySqlCommand cmd = new MySqlCommand(QRY_UPDATE_SOCIAL_ACCESS, conn)) { cmd.Parameters.Add("@client_id", MySqlDbType.Int64).Value = clientId; cmd.Parameters.Add("@socialcred", MySqlDbType.Text).Value = credentialsEncrypted; try { conn.Open(); cmd.ExecuteNonQuery(); } catch (Exception ex) { Logger.Instance.Write(LogLevel.Error, ex, "UpdateSocialCredentials"); } finally { conn.Close(); } } }
public override string GetSocialCredential(long clientId, SocialConnector connector, string element) { string ret = string.Empty; string accessCode = GetSocialAccessCode(clientId); using (MySqlConnection conn = new MySqlConnection(GetConnectionString())) using (MySqlCommand cmd = new MySqlCommand(QRY_GET_SOCIAL_ACCESS_CRED, conn)) { cmd.Parameters.Add("@client_id", MySqlDbType.Int64).Value = clientId; try { conn.Open(); object obj = cmd.ExecuteScalar(); if (obj != null) { string credentials = obj as string; string xmlText = Crypto.Decrypt(credentials, accessCode); // At this point ret contains the xml with the connector access // now we have to look for the proper connector and the specified element ret = getCredentialFromXml(xmlText, connector, element); } else { ret = null; } } catch (Exception ex) { Logger.Instance.Write(LogLevel.Error, ex, "GetSocialCredentials"); ret = null; } finally { conn.Close(); } } return ret; }
public abstract void RemoveSocialCredential(long clientId, SocialConnector connector);
public abstract string GetSocialCredential(long clientId, SocialConnector connector, string element);