mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-22 08:25:53 -05:00
Merge branch 'master' of https://github.com/greenart7c3/nips
This commit is contained in:
commit
6ee0648f00
54
100.md
54
100.md
|
@ -40,18 +40,42 @@ fun isExternalSignerInstalled(context: Context): Boolean {
|
|||
|
||||
To get the result back from the Signer Application you should use `registerForActivityResult` or `rememberLauncherForActivityResult` in Kotlin. If you are using another framework check the documentation of your framework or a third party library to get the result.
|
||||
|
||||
```kotlin
|
||||
val launcher = rememberLauncherForActivityResult(
|
||||
contract = ActivityResultContracts.StartActivityForResult(),
|
||||
onResult = { result ->
|
||||
if (result.resultCode != Activity.RESULT_OK) {
|
||||
Toast.makeText(
|
||||
context,
|
||||
"Sign request rejected",
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
} else {
|
||||
val signature = activityResult.data?.getStringExtra("signature")
|
||||
// Do something with signature ...
|
||||
}
|
||||
}
|
||||
)
|
||||
```
|
||||
|
||||
Create the Intent using the **nostrsigner** scheme:
|
||||
|
||||
```kotlin
|
||||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("nostrsigner:$content"))
|
||||
```
|
||||
|
||||
* Set the Signer package name
|
||||
Set the Signer package name:
|
||||
|
||||
```kotlin
|
||||
intent.`package` = "com.example.signer"
|
||||
```
|
||||
|
||||
Send the Intent:
|
||||
|
||||
```kotlin
|
||||
launcher.launch(intent)
|
||||
```
|
||||
|
||||
### Methods
|
||||
|
||||
- **get_public_key**
|
||||
|
@ -61,14 +85,14 @@ intent.`package` = "com.example.signer"
|
|||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("nostrsigner:"))
|
||||
intent.`package` = "com.example.signer"
|
||||
intent.putExtra("type", "get_public_key")
|
||||
// You can send some default permissions for the user authorize for ever
|
||||
// You can send some default permissions for the user to authorize for ever
|
||||
val permissions = listOf(
|
||||
Permission(
|
||||
"sign_event",
|
||||
22242
|
||||
type = "sign_event",
|
||||
kind = 22242
|
||||
),
|
||||
Permission(
|
||||
"nip44_decrypt"
|
||||
type = "nip44_decrypt"
|
||||
)
|
||||
)
|
||||
intent.putExtra("permissions", permissions.toJson())
|
||||
|
@ -90,10 +114,10 @@ intent.`package` = "com.example.signer"
|
|||
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("nostrsigner:$eventJson"))
|
||||
intent.`package` = "com.example.signer"
|
||||
intent.putExtra("type", "sign_event")
|
||||
// to control the result in your application in case you are not waiting the result before sending another intent
|
||||
// To handle results when not waiting between intents
|
||||
intent.putExtra("id", event.id)
|
||||
// Send the current logged in user npub
|
||||
intent.putExtra("current_user", account.keyPair.pubKey.toNpub())
|
||||
intent.putExtra("current_user", npub)
|
||||
|
||||
context.startActivity(intent)
|
||||
```
|
||||
|
@ -102,7 +126,7 @@ intent.`package` = "com.example.signer"
|
|||
|
||||
```kotlin
|
||||
val signature = intent.data?.getStringExtra("signature")
|
||||
// the id you sent
|
||||
// The id you sent
|
||||
val id = intent.data?.getStringExtra("id")
|
||||
val signedEventJson = intent.data?.getStringExtra("event")
|
||||
```
|
||||
|
@ -233,13 +257,13 @@ intent.`package` = "com.example.signer"
|
|||
|
||||
To get the result back from Signer Application you should use contentResolver.query in Kotlin. If you are using another framework check the documentation of your framework or a third party library to get the result.
|
||||
|
||||
If the user did not check the remember my choice option, the npub is not in Signer Application or the signer type is not recognized the contentResolver will return null
|
||||
If the user did not check the "remember my choice" option, the npub is not in Signer Application or the signer type is not recognized the `contentResolver` will return null
|
||||
|
||||
For the SIGN_EVENT type Signer Application returns two columns "signature" and "event". The column event is the signed event json
|
||||
|
||||
For the other types Signer Application returns the column "signature"
|
||||
|
||||
If the user chose to always reject the event signer application will return the column "rejected" and you should not open signer application
|
||||
If the user chose to always reject the event, signer application will return the column "rejected" and you should not open signer application
|
||||
|
||||
### Methods
|
||||
|
||||
|
@ -416,15 +440,15 @@ If the user chose to always reject the event signer application will return the
|
|||
|
||||
# Usage for Web Applications
|
||||
|
||||
Since web applications can't receive a result from the intent you should add a modal to paste the signature or the event json or create a callback url.
|
||||
Since web applications can't receive a result from the intent, you should add a modal to paste the signature or the event json or create a callback url.
|
||||
|
||||
If you send the callback url parameter Signer Application will send the result to the url.
|
||||
If you send the callback url parameter, Signer Application will send the result to the url.
|
||||
|
||||
If you don't send a callback url Signer Application will copy the result to the clipboard.
|
||||
If you don't send a callback url, Signer Application will copy the result to the clipboard.
|
||||
|
||||
You can configure the returnType to be **signature** or **event**.
|
||||
You can configure the `returnType` to be **signature** or **event**.
|
||||
|
||||
Android intents and browsers url has limitations, so if you are using the returnType of **event** consider using the parameter **compressionType=gzip** that will return "Signer1" + Base 64 gzip encoded event json
|
||||
Android intents and browser urls have limitations, so if you are using the `returnType` of **event** consider using the parameter **compressionType=gzip** that will return "Signer1" + Base64 gzip encoded event json
|
||||
|
||||
## Methods
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user